Возможно ли сериализовать и десериализовать объект, содержащий объект в качестве переменной в Firebase?

#android #firebase #firebase-realtime-database

#Android #firebase #firebase-realtime-database

Вопрос:

Я пытаюсь структурировать свои базы данных, и мне было интересно, возможно ли десериализовать объект из Firebase RealDatabase со следующей структурой.

 public class Profile{
    private String userID;
    private TenantProfile tenant;
}
public class TenantProfile{
    private String name;
    private Room room;
}
public class Room{
    private String town;
    private int size;
}
  

Можно ли десериализовать весь профиль объекта из Firebase из одного запроса?

Я просто хочу убедиться, что это возможно, прежде чем проводить рефакторинг моего кода и изменять ссылки на базу данных.

Заранее спасибо.

Комментарии:

1. Вы могли бы написать некоторый тестовый код, чтобы проверить это самостоятельно, не внося никаких существенных изменений.

Ответ №1:

База данных Firebase сериализует / десериализует любые общедоступные поля и общедоступные свойства, которые соответствуют соглашениям об именовании JavaBean для геттеров и сеттеров. Поскольку показанные вами классы не содержат ни того, ни другого, они не будут считывать или записывать какие-либо данные.

Если вы пометите поля как public или добавите общедоступные получатели / установщики, то запись экземпляра Profile класса сгенерирует этот JSON:

 "userID": {
  "tenant": {
    "name": "the name",
    "room": {
      "town": "the town",
      "size": 42
    }
  }
}
  

И это также формат, который вам нужно будет иметь в базе данных, чтобы прочитать значение обратно.