如何使用Jackson注释序列化此JSON?

Phi*_*ppe 6 java serialization json jackson

我有以下JSON:

{ 
    fields : {
            "foo" : "foovalue",
            "bar" : "barvalue"
    }
}
Run Code Online (Sandbox Code Playgroud)

我写了一个pojo如下:

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
}
Run Code Online (Sandbox Code Playgroud)

这显然会失败,因为我的json字段"fields"是一个hashmap,而不是一个列表.
我的问题是:是否有任何"魔术"注释可以使杰克逊将地图键识别为pojo属性名称,并将地图值分配给pojo属性值?

PS:我真的不想让我的田野对象......

private Map<String, String> fields;
Run Code Online (Sandbox Code Playgroud)

...因为在我的真实世界json中,我在地图值中有复杂的对象,而不仅仅是字符串......

谢谢 ;-)

菲利普

Sta*_*Man 12

好的,对于那个JSON,你只需稍微修改你的例子,如:

public class MyPojo {
  public Fields fields;
}

public class Fields {
  public String foo;
  public String bar;
}
Run Code Online (Sandbox Code Playgroud)

因为对象的结构需要与JSON的结构对齐.你当然可以使用setter和getter而不是public字段(甚至是构造函数而不是setter或fields),这只是最简单的例子.

您的原始类将生成/使用JSON更像:

{ 
  "fields" : [
    {
      "foo" : "foovalue",
      "bar" : "barvalue"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

因为列表映射到JSON数组.