有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我有以下JSON:

{ 
    fields : {
            "foo" : "foovalue",
            "bar" : "barvalue"
    }
}

我写了一篇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
}

这显然失败了,因为我的json字段“fields”是一个hashmap,而不是一个列表
我的问题是:是否有任何“神奇”注释可以让Jackson将贴图键识别为pojo属性名称,并将贴图值指定给pojo属性值

我真的不想把我的fields对象作为

private Map<String, String> fields;

。。。因为在我的真实json中,映射值中有复杂的对象,而不仅仅是字符串

谢谢;-)

菲利普


共 (1) 个答案

  1. # 1 楼答案

    对于这个JSON,您只需稍微修改一下示例,比如:

    public class MyPojo {
      public Fields fields;
    }
    
    public class Fields {
      public String foo;
      public String bar;
    }
    

    因为对象的结构需要与JSON的结构保持一致。当然,您可以使用setter和getter代替公共字段(甚至可以使用构造函数代替setter或字段),这只是最简单的示例

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

    { 
      "fields" : [
        {
          "foo" : "foovalue",
          "bar" : "barvalue"
        }
      ]
    }
    

    因为列表映射到JSON数组