这个json数据的模型设计应该是什么?

时间:2017-11-09 12:56:30

标签: android firebase firebase-realtime-database gson

我正在尝试解析来自firebase节点的数据,其中包含此json值here is pic of json of node

我创建的相应数据模型看起来像这样

public class Extreme {

    @SerializedName("metaData")
    public ThreadModel.MetaData metaData;
    @SerializedName("users")
    public List<Users> usersList;
    @SerializedName("messages")
    public List<MessagesTwo> messagesList;


    public static class MetaData{
        @SerializedName("createBy")
        public String createBy;
        @SerializedName("createdAt")
        public Long createdAt;
        @SerializedName("name")
        public String name;
        @SerializedName("type")
        public String type;
        @SerializedName("threadPic")
        public String threadPic;
    }

    public static class Users{
        public String key;
        public boolean value;
    }
}   

但是当我尝试解析来自firebase数据库快照的数据时,问题只是将metaData的值解析为模型,所有其他事情都被忽略了。我只是想知道相应的模型看起来应该是什么样的。经常发生这种事让我把这个问题放在堆栈溢出上。对不起,如果这个问题有任何重复..

1 个答案:

答案 0 :(得分:0)

模型应该是:

public class Extreme {

    @SerializedName("metaData")
    public ThreadModel.MetaData metaData;
    @SerializedName("users")
    public Map<String,Boolean> usersList;
    @SerializedName("messages")
    public Map<String,Message> messagesList;

    public static class Message {
      private String id;
      private boolean seen;
      private String text;
      private long timeStamp;
      private String type;
}

您可以将所需的名称放在Message中的属性中,但如果这样做,则使用@SerializeName

不要忘记getter&setter,或者将属性公之于众。

使用Map的主要原因是因为键似乎是随机的。因此,您无法使用已定义的属性。

奖励点:如果属性的名称与json模型不同,您只需要@SerializedName。