我有以下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,而不是一个列表 我的问题是:是否有任何“魔术”注释可以使杰克逊将地图键识别为pojo属性名称,并将地图值分配给pojo属性值?
P.S。:我真的不希望我的字段对象是......
private Map<String, String> fields;
...因为在我的真实世界json中,我在地图值中有复杂的对象,而不仅仅是字符串......
谢谢; - )
菲利普
答案 0 :(得分:12)
好的,对于那个JSON,您只需稍微修改一下您的示例,例如:
public class MyPojo {
public Fields fields;
}
public class Fields {
public String foo;
public String bar;
}
因为对象的结构需要与JSON的结构对齐。你当然可以使用setter和getter而不是public字段(甚至是构造函数而不是setter或fields),这只是最简单的例子。
您的原始类将生成/使用JSON更像:
{
"fields" : [
{
"foo" : "foovalue",
"bar" : "barvalue"
}
]
}
因为Lists映射到JSON数组。