5

Json のいくつかのプロパティが、モデル クラスに存在する HashMap にマップされるように、JSON ファイルを非整列化しようとしています。残りのプロパティは、クラスのそれぞれのフィールドにマップされます。以下の Json を見つけてください。

{
         "_id":2,
         "Name":"xyz",
         "Age":20,
         "MEMO_TEXT":"yyy",
         "MEMO_LINK":"zzz",
         "MEMO_DOB":"",
         "MEMO_USERNAME":"linie orange",
         "MEMO_CATEGORY":2,
         "MEMO_UID":"B82071415B07495F9DD02C152E4805EC"
      }

そして、これが私がこの Json をマップしたい Model クラスです:

public class Model{

    private int                              _id;
    private String                           name;
    private int                              age
    private HashMap<String, String> columns;

    //Getters and Setter methods
}

だからここで、私が欲しいのは、columnsキーを含むマップを取得することです"MEMO_TEXT","MEMO_LINK","MEMO_DOB","MEMO_USERNAME","MEMO_CATEGORY","MEMO_UID"

Json の残りのプロパティは、それぞれのフィールドにマップされます。

Jackson Library の ObjectMapper を使用してこれを行うことは可能ですか?

4

3 に答える 3

1

目的を達成するためのいくつかの方法の 1 つは、コンストラクターを追加することです。

@JsonCreator
public Model(Map<String, Object> fields) {
    this._id = (int) fields.remove("_id");
    this.name = (String) fields.remove("Name");
    this.age = (int) fields.remove("Age");
    this.columns = new HashMap<String, String>();
    for (Entry<String, Object> column : fields.entrySet()) {
        columns.put(column.getKey(), column.getValue().toString());
    }
}

JSON にシリアライズすると、最初の構造とは異なる構造になることに注意してください。

于 2015-05-08T12:04:47.857 に答える