我有以下JSON:
{
"data": {
"1": {
"id":"1",
"name":"test1"
},
"2": {
"id":"2",
"name":"test2"
}
}
}
我想解析&#34;数据&#34;与杰克逊成为一个对象。如果我将其解析为Map<String, Object>
它运作良好,而&#34; 1&#34;,&#34; 2&#34; (...)用作Key,各自的数据作为值,再次用Map表示。
现在我想将这个JSON解析为Map<String, TypeA>
,而类TypeA
将有两个字段,id和name。
有人可以给我一个提示吗? 我总是收到以下错误:
无法读取JSON:找不到类型为[simple]的合适构造函数 type,class TypeA]:无法从JSON对象实例化(需要 添加/启用类型信息?)
提前多多谢谢,
tohoe
答案 0 :(得分:1)
以下内容适合您。
public class MyDataObject {
private final Map<String, TypeA> data;
@JsonCreator
public MyDataObject(@JsonProperty("data") final Map<String, TypeA> data) {
this.data = data;
}
public Map<String, TypeA> getData() {
return data;
}
}
public class TypeA {
private final String id;
private final String name;
@JsonCreator
public TypeA(@JsonProperty("id") final String id,
@JsonProperty("name") String name) {
this.id = id;
this.name = name;
}
public String getId() {
return id;
}
public String getName() {
return name;
}
}
@JsonCreator
用于描述如何使用属性@JsonProperty
的名称创建对象。即使它们是嵌套的。
反序列化整个事情:
ObjectMapper mapper = new ObjectMapper();
final MyDataObject myDataObject = mapper.readValue(json, MyDataObject.class);