Jackson Annotationsを使用してこのJSONをシリアル化するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/4410470

質問

私は次の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アレイにマップをリストするからです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top