将Firebase json转换为Java对象

将Firebase json转换为Java对象,java,firebase,firebase-realtime-database,Java,Firebase,Firebase Realtime Database,自从我开始使用Firebase实时数据库以来,琐碎的任务变得越来越困难 我在Firebase数据库中有以下JSON结构 { "EmailId": "sample.co@email.com", "Locations": { "-Kci2Ov9_lI2d5RUnvYT": { "Latitude": "17", "Longitude": "78", "RecordedDateTime": "125

自从我开始使用Firebase实时数据库以来,琐碎的任务变得越来越困难

我在Firebase数据库中有以下JSON结构

{
    "EmailId": "sample.co@email.com",
    "Locations": {
        "-Kci2Ov9_lI2d5RUnvYT": {
            "Latitude": "17",
            "Longitude": "78",
            "RecordedDateTime": "1254"
        },
        "-Kci77tuFbWP5Vdt4keF": {
            "Latitude": "17",
            "Longitude": "78",
            "RecordedDateTime": "1254"
        }
    },  
    "MobileNumber": 1234567890,
    "UserName": "Firstname Lastname"
}
来自java的firebase查询返回一个DataSnapshot,我知道它包含上述结构。我有下面的Java对象,我认为它映射到上面的结构

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

    //Constructor, getters and setters are below.
}
错误:

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

请告知Java类,以及为什么当Firebase将数据存储为值为字符串的json时会出现此转换错误?

您的MobileNumber被保存为长值,而您正试图将其检索为字符串。您可以在POJO上更改其数据类型:

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

    //Constructor, getters and setters are below.
}

我认为,一旦数据进入键值对数据库,它就会变成一个stringYes,整个数据库就是一个JSON文件(基本上是一个结构化字符串)。但是,在写入和/或读取数据时,数据必须具有特定的数据类型。您可以看到所有支持的数据类型。内部列表是否会映射到java类中的ArrayList变量。我从未尝试在firebase上使用ArrayList,但正如@Linxy mentioed所示,您应该将其更改为
Map
change ArrayList。。。地图位置
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"