【发布时间】:2014-01-22 15:58:02
【问题描述】:
我想反序列化以下 JSON 对象:
{
"id":"001",
"module_name":"Users",
"name_value_list":
{
"user_name": {"name":"user_name", "value":"admin"},
"full_name": {"name":"full_name", "value":"Lluís Pi"},
"city": {"name":"full_name", "value":"Barcelona"},
"postal_code": {"name":"postal_code", "value":"08017"},
...
}
}
像这样进入一些 Java 对象:
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY, getterVisibility = JsonAutoDetect.Visibility.NONE)
public class UserEntry
{
private String id;
private String moduleName;
private Person nameValueList;
public String getId()
{
return id;
}
public String getModuleName()
{
return moduleName;
}
public Person getPerson()
{
return nameValueList;
}
}
其中 Person 是以下类:
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY, getterVisibility = JsonAutoDetect.Visibility.NONE)
class Person
{
private String userName;
private String fullName;
private String city;
private String postalCode;
}
使用 Jackson 但我收到反序列化错误。
如果我将字段 nameValueList 的类型更改为 Map,则所有反序列化过程都没有问题,我会得到一个映射,其中键是“名称”值,值是“值”值。
所以我的问题是:有没有简单的方法,或者没有那么简单的方法可以将这种 JSON 对象反序列化为具有 prop_1、prop_2、prop_3 和 prop_4 属性的 Java Pojo?
{
"name_value_list":
{
"prop_1": {"name":"prop_1", "value":"value_1"},
"prop_2": {"name":"prop_2", "value":"value_2"},
"prop_3": {"name":"prop_3", "value":"value_3"},
"prop_4": {"name":"prop_4", "value":"value_4"},
...
}
}
【问题讨论】:
标签: java json jackson deserialization