Я обнаружил, что при сохранении POJO с полем карты с использованием Firebase на Android, если эта карта содержит значения null в свойстве value этой карты, тогда все поле игнорируется.Android Firebase - Почему нулевые значения в полях карты игнорируются
Обходной путь прост (непустые значения приведут к успешному сохранению карты), но я хочу понять, почему это так?
Модель
public class Game {
private String owner;
private Map<String, String> characters;
public Game() {
// empty constructor for Firebase
}
public String getOwner() {
return owner;
}
public void setOwner(String owner) {
this.owner = owner;
}
public Map<String, String> getCharacters() {
return characters;
}
public void setCharacters(Map<String, String> characters) {
this.characters = characters;
}
}
телефонный код
final Game game = new Game();
game.setOwner("owner");
game.setCharacters(new HashMap<String, String>());
game.getCharacters().put("Bugs Bunny", null);
game.getCharacters().put("Batman", null);
final Firebase ref = new Firebase("<firebaseurl>/test/" + System.currentTimeMillis());
ref.setValue(game);
Результирующий объект в Firebase
{
"1456421340781": {
"owner": "owner"
}
}
Спасибо! Похоже, я недостаточно RTFM, с тех пор нашел «Обратите внимание, что передача null в setValue() приведет к удалению данных в указанном месте». и «Обратите внимание, что передача null на карте приведет к удалению данных в этом месте в базе данных». на https://www.firebase.com/docs/android/guide/saving-data.html – keith
Отлично. Я действительно искал последний ответ, но не смог. Найди это. Я удалю бит об этом, не будучи документированным для Android, из моего ответа. –