В новый Firebase Android внесены огромные изменения; ниже копия документа:
[https://firebase.google.com/support/guides/firebase-android] :
Обновление объектов модели Java
Как и в 2.x SDK, база данных Firebase автоматически преобразует объекты Java, которые вы передаете в DatabaseReference.setValue()
, в JSON и может читать JSON в объекты Java, используя DataSnapshot.getValue()
.
В новом SDK при чтении JSON в объект Java с DataSnapshot.getValue()
неизвестные свойства в JSON теперь игнорируются по умолчанию, поэтому вам больше не нужно @JsonIgnoreExtraProperties(ignoreUnknown=true)
.
Чтобы исключить поля / получатели при записи Java-объекта в JSON, аннотация теперь называется @Exclude
вместо @JsonIgnore
.
BEFORE
@JsonIgnoreExtraProperties(ignoreUnknown=true)
public class ChatMessage {
public String name;
public String message;
@JsonIgnore
public String ignoreThisField;
}
dataSnapshot.getValue(ChatMessage.class)
AFTER
public class ChatMessage {
public String name;
public String message;
@Exclude
public String ignoreThisField;
}
dataSnapshot.getValue(ChatMessage.class)
Если в вашем JSON есть дополнительное свойство, которого нет в вашем классе Java, вы увидите это предупреждение в файлах журнала:
W/ClassMapper: No setter/field for ignoreThisProperty found on class com.firebase.migrationguide.ChatMessage
Вы можете избавиться от этого предупреждения, поместив аннотацию @IgnoreExtraProperties
в своем классе. Если вы хотите, чтобы база данных Firebase вела себя так же, как в 2.x SDK, и выдает исключение, если есть неизвестные свойства, вы можете поместить в свой класс аннотацию @ThrowOnExtraProperties
.