使用Jackson将JSON中一个字段的不同类型的值映射到java对象
我们有一个json,其中特定字段的数据类型不同。我想使用jackson将其映射到Java对象。如果字段是一种类型,我就可以这样做。但对于不同的类型却找不到办法使用Jackson将JSON中一个字段的不同类型的值映射到java对象,java,jackson,pojo,Java,Jackson,Pojo,我们有一个json,其中特定字段的数据类型不同。我想使用jackson将其映射到Java对象。如果字段是一种类型,我就可以这样做。但对于不同的类型却找不到办法 { "firstname": "first_name", "age": "34", "add_info": [{ "type": "type_a",
{
"firstname": "first_name",
"age": "34",
"add_info": [{
"type": "type_a",
"value": "value_a"
},
{
"type": "type_b",
"value": [{
"title": "info_1",
"desc": "desc_1"
},
{
"title": "info_2",
"desc": "desc_2"
}
]
}
]
}
基本上我不知道如何定义它
public class AddInfo {
private String type;
private List<Value> value = null;
//getter and setters
}
公共类附加信息{
私有字符串类型;
私有列表值=null;
//二传手
}
在上面的JSON for add_info字段中,它包含一个JSON对象数组,其中第一个对象值为string类型,第二个值包含一个对象数组
如何使用jackson在Pojo中处理这种情况如果不想编写自定义反序列化程序,只需使用对象字段即可:
public class AddInfo {
public String type;
public Object value;
public static void main(String[] args) throws Exception {
ObjectMapper om = new ObjectMapper();
AddInfo i1 = om.readValue("{\"value\":\"string\"}", AddInfo.class);
System.out.println(i1.value);
AddInfo i2 = om.readValue("{\"value\":[{\"x\":1}]}", AddInfo.class);
System.out.println(i2.value);
}
}
在第一次运行中,i1.value是一个字符串。在第二次运行中,i2.value是哈希映射的列表。
因此,您松开了Pojo结构。为
列表创建一个类
,并编写一个自定义反序列化器感谢您的输入!我们如何在这里编写自定义反序列化程序?您会发现,hashmap的details列表意味着它将类似于x作为键,1作为值