2017-11-09 10 views
0

私は、このJSON値here is pic of json of nodeこのjsonデータのモデルの設計はどうすればよいですか?

が含まれているfirebaseのノードからのデータを、解析しようとしていますし、私が作成した対応するデータモデルは、この

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の値をモデル化するだけで、他のすべてのものは無視されました。私はちょうど対応するモデルが同じように見えるべきであることを知りたい。私はこの質問をスタックオーバーフローに置くことがしばしば私に起こります。申し訳ありませんが、この質問のいずれかの重複がある場合..モデルはようにする必要があり

+0

メタデータを解析しましたが、メッセージとユーザーを正しく解析できませんでしたか? –

+0

この図は少し不明ですが、 'users'はリストではなく2つのブール変数を持つモデルのようです。調べる実際のJSON文字列の例を提供できますか? –

+0

@PeterHadda metaDataは、上記のモデルでのみ解析されます。 userList&messageListは空のままです。私は実際のjsonのリストを信じています – JOt

答えて

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; 
} 

メッセージ内の属性にしたい名前を入れていますが、行う場合は、@SerializeName

を使用することができます

getterとsetterを忘れたり、属性をpublicにしたりしないでください。

マップを使用する主な理由は、キーがランダムであるように見えるためです。そのため、定義済みの属性は使用できません。

ボーナスポイント:属性の名前がjsonモデルと異なる場合、実際には@SerializedNameが必要です。

+0

@Leondro Ocampo、答えに感謝して答えを出しました。おかげでたくさん – JOt

+0

あなたは大歓迎です。 FirebaseにSerializedNameの代わりにPropertyNameを使用する必要があるとのコメントがあります。おそらく、このリンクは役に立つかもしれません:https://stackoverflow.com/questions/40690641/naming-convention-with-firebase-serialization-deserialization –

関連する問題