2017-02-11 2 views
1

С тех пор, как я начал работать с базой данных Firebase в режиме реального времени, тривиальные задачи становятся все труднее.Преобразование объекта Firebase json в Java

У меня есть следующая структура JSON в базе данных Firebase.

{ 
    "EmailId": "[email protected]", 
    "Locations": { 
     "-Kci2Ov9_lI2d5RUnvYT": { 
      "Latitude": "17", 
      "Longitude": "78", 
      "RecordedDateTime": "1254" 
     }, 
     "-Kci77tuFbWP5Vdt4keF": { 
      "Latitude": "17", 
      "Longitude": "78", 
      "RecordedDateTime": "1254" 
     } 
    }, 
    "MobileNumber": 1234567890, 
    "UserName": "Firstname Lastname" 
} 

Мой запрос firebase из java возвращает DataSnapshot, который, как я знаю, содержит указанную выше структуру. У меня есть следующий объект Java, который, я думаю, сопоставляется с вышеуказанной структурой.

public class User { 
    private String EmailId; 
    private String MobileNumber; 
    private String UserName; 
    private ArrayList<UserLocationInfo> userLocationInfos; 

    //Constructor, getters and setters are below. 
} 

Но код не работает, когда я пытаюсь прочитать DataSnapshot в этот объект, используя следующий код.

dataSnapshot.getValue(User.class) 

Ошибка:

com.google.firebase.database.DatabaseException: Failed to convert value of type java.lang.Long to String. 

Пожалуйста посоветуйте на классе Java, а также почему я получаю эту ошибку, когда Convertion Firebase хранит данные в формате JSON, значения которых являются строками?

+0

изменения ArrayList ... на карте Locations – Linxy

ответ

1

Ваш MobileNumber был сохранен как длинное значение, и вы пытаетесь получить его как строку. Вы можете изменить его тип данных на вашем POJO:

public class User { 
    private String EmailId; 
    private long MobileNumber; 
    private String UserName; 
    private ArrayList<UserLocationInfo> userLocationInfos; 

    //Constructor, getters and setters are below. 
} 

Или превращается в строку на вашей базе данных, добавляя кавычки:

"MobileNumber": "1234567890", 
"UserName": "Firstname Lastname" 
+0

Я, хотя однажды данные попадают в базу двоичных ключей пары значений, она становится строкой –

+0

Да, вся база данных - это один JSON-файл (который в основном представляет собой структурированную строку). Но когда вы пишете и/или читаете данные, данные должны иметь определенный тип данных. Вы можете просмотреть все поддерживаемые типы данных [здесь] (https://firebase.google.com/docs/database/android/read-and-write#basic_write). –

+0

будет отображен внутренний список в переменную ArrayList в классе java. –

Смежные вопросы