2016-04-08 17 views
0

私はクラスオブジェクトのリストを使用するモデルを持っています。 firebaseクエリのdatasnapshotからgetvalueを試しています。しかし、com.fasterxml.jackson.databind.JsonMappingExceptionというメッセージが表示されます。java.util.ArrayListのインスタンスをSTART_OBJECTトークンからデシリアライズできません。リストの除外リスト<Object> android for Firbase throwing例外:com.fasterxml.jackson.databind.JsonMappingException

コードは次のようになります。

Key.java 
@JsonIgnoreProperties(ignoreUnknown = true) 
Class Key implements implements Parcelable { 
    private String key; 

    public Key() { 
    } 

    public String getkey() { 
     return key; 
    } 

    public void setkey(String name) { 
     this.key = name; 
    } 

    @Override 
    public int describeContents() { 
     return 0; 
     } 

     @Override 
     public void writeToParcel(Parcel dest, int flags) { 
     dest.writeString(this.key); 
     } 

     protected Key(Parcel in) { 
     this.key = in.readString(); 
     } 

     public static final Creator<Key> CREATOR = new Creator<Key>() { 
      public Key createFromParcel(Parcel source) { 
      return new Key(source); 
     } 

     public Key[] newArray(int size) { 
      return new Key[size]; 
     } 
    };  

} 

Model.java 
@JsonIgnoreProperties(ignoreUnknown = true) 
Class Model implements implements Parcelable { 
    private String Addr1; 
    private String Addr2; 
    private List<Key>Keys; 

    public Model() { 
    } 

    public String getAddr1() { 
     return this.Addr1; 
    } 
    public String getAddr2() { 
     return this.Addr2; 
    } 

    public List<Key>getKeys(){ 
     return this.Keys; 
    } 

    public void setAddr1(String addr) { 
     this.Addr1 = addr; 
    } 
    public void setAddr2(String addr) { 
     this.Addr2 = addr; 
    } 

    public void setKeys(List<Key> keys){ 
     this.Keys = keys; 
    } 



    @Override 
    public int describeContents() { 
     return 0; 
     } 

     @Override 
     public void writeToParcel(Parcel dest, int flags) { 
     dest.writeString(this.Addr1); 
     dest.writeString(this.Addr2); 
     dest.writeTypedList(this.Keys); 

     } 

     protected Key(Parcel in) { 
     this.Addr1= in.readString(); 
     this.Addr2 = in.readString(); 
     this.keys= in.createTypedArrayList(Keys.CREATOR); 
     } 

     public static final Creator<Model> CREATOR = new Creator<Model>() { 
      public Key createFromParcel(Parcel source) { 
      return new Model(source); 
     } 

     public Model[] newArray(int size) { 
      return new Model[size]; 
     } 
    };  

} 

オブジェクトモデルはFirebase DBに保存されます。私の見解私はfirebaseからdatasnapshotを取得し、Modelクラスをシリアル化しようとしていて

"Keys" : { 
    "-KEr8rtIHAIAVftmRRAp" : { 
     "key" : "-KEr8rquQnMzVycKlsGm" 
    } 
    }, 

:とFirebase DBのキー構造は次のようになります。

for (DataSnapshot data : dataSnapshot.getChildren()){ 
    Model cur= data.getValue(Model.class); 
} 

この呼び出しが行われている間は例外がスローされます。私はJavaシリアル化の初心者です。

+0

次のモデルマップ>がFirebase構造体にあると思いますが、リストが必要です。私が間違っていれば私を修正してください。 – user954299

+0

あなたは正しいです。 http://stackoverflow.com/questions/32886546/how-to-get-all-child-list-from-firebase-androidを参照してください。 –

答えて

0

解決しました。私はモデルをHashMapkeysに変更しました。後でjson構造を実現しました。

関連する問題