#android #json #parsing #kotlin #couchbase-lite
#Android #json #синтаксический анализ #kotlin #couchbase-lite
Вопрос:
У меня есть некоторый синхронизированный документ из Sync gateway в локальной базе данных couchbase lite. Мне нужно проанализировать этот документ json для моего пользовательского типа java. Но couchbase возвращает мне карту. Я просто хочу знать, есть ли какой-либо способ, с помощью которого я мог бы сохранить пользовательский тип в couchbase db при синхронизации с sync gateway.
В настоящее время я конвертирую Map в пользовательский тип java каждый раз, когда открываю приложение. Но этот процесс занимает некоторое время и влияет на время загрузки моего пользовательского интерфейса.
Комментарии:
1. Добавьте какой-нибудь код, который вы пробовали, чтобы сообщество могло вам помочь
2. Эй, Абхишек, я не уверен, что понимаю проблему. Похоже, вы инициализируете кучу новых объектов при запуске вашего приложения. Создание инициализирующих объектов из хранилища данных может быть дорогостоящим, независимо от того, как вы это делаете. Couchbase делает это настолько быстро, насколько это возможно. Вместо этого вы могли бы рассмотреть отложенную инициализацию, чтобы амортизировать затраты на инициализацию в течение жизненного цикла приложения…
3. @G.BlakeMeike в соответствии с вашим решением для отложенной инициализации, моему компоненту пользовательского интерфейса потребуется некоторое время для рендеринга, потому что данные поступают из couchbase. Я искал везде, но обнаружил, что couchbase всегда возвращает Map<Строка, объект> . Если я не проанализирую эту карту для своих пользовательских типов java (классов pojo), мне будет сложно получить данные из внутренней структуры данных. К вашему сведению, наш json сложный. Адрита Шарма На данный момент я не могу поделиться кодом в качестве корпоративного приложения. Надеюсь, вы понимаете. Спасибо вам, ребята, за ваш ответ.
4. Если ваш JSON сложный, то для его анализа может потребоваться некоторое время. Попробуйте выполнить некоторые фактические тайминги. Бьюсь об заклад, вы обнаружите, что время, необходимое для преобразования из Map в пользовательский объект, довольно незначительно. Дорогостоящая часть заключается в извлечении данных из базы данных и их анализе. Couchbase делает это настолько быстро, насколько это возможно.
Ответ №1:
Я предлагаю вам добавить конструктор (или статический инициализатор) для преобразования объектов карты в ваши пользовательские объекты:
public class Pojo {
// ...
public Pojo() { }
public Pojo(Map<String, Object> json) {
String foo = (String) json.get("foo");
this.foo = (foo != null) ? foo : DEFAULT_FOO;
this.bar = Bar(json.get("bar"));
// ...
}
}
Если ваш объект действительно не просто огромен или их сотни, это не должно занять значительного времени.