Jackson Annotationsを使用してこのJSONをシリアル化するにはどうすればよいですか?
-
08-10-2019 - |
質問
私は次のjsonを持っています:
{
fields : {
"foo" : "foovalue",
"bar" : "barvalue"
}
}
次のようにポジョを書きました:
public class MyPojo {
@JsonProperty("fields")
private List<Field> fields;
static class Field {
@JsonProperty("foo") private String foo;
@JsonProperty("bar") private String bar;
//Getters and setters for those 2
}
私のJSONフィールド「フィールド」はハッシュマップであり、リストではないため、これは明らかに失敗します。
私の質問は、ジャクソンにマップキーをPojoプロパティ名として認識し、Pojoプロパティ値にマップ値を割り当てる「マジック」注釈はありますか?
PS:私は本当に自分のフィールドオブジェクトを...
private Map<String, String> fields;
...私の実際のJSONでは、文字列だけでなく、マップ値に複雑なオブジェクトがあるからです...
ありがとう ;-)
フィリップ
解決
OK、そのJSONのために、あなたはあなたの例をわずかに変更するだけです:
public class MyPojo {
public Fields fields;
}
public class Fields {
public String foo;
public String bar;
}
オブジェクトの構造は、JSONの構造と一致する必要があるためです。もちろん、パブリックフィールドの代わりにセッターとゲッター(およびセッターやフィールドではなくコンストラクター)を使用できます。これは、最も簡単な例です。
元のクラスは、JSONを作成/消費します。
{
"fields" : [
{
"foo" : "foovalue",
"bar" : "barvalue"
}
]
}
JSONアレイにマップをリストするからです。
所属していません StackOverflow