【发布时间】:2013-09-11 11:05:34
【问题描述】:
我有一个以下格式的json,其中key代表属性类型,value代表该属性的值。
{ "attributes":
[
{
"key":"name",
"value":"Archit"
},
{
"key":"website",
"value":"stackoverflow"
},
{
"key":"languages",
"value":[
"python",
"java",
"c++"
]
}
]
}
我正在尝试使用 jackson 将其映射到以下 java 对象:
public class Attributes {
List<Attribute> attributes;
}
public abstract class Attribute {
String key;
}
public class SingleValuedAttribute extends Attribute{
String value;
}
public class MultiValuedAttribute extends Attribute{
List<String> value;
}
ObjectMapper mapper = new ObjectMapper();
Attributes attributes = mapper.readValue(new File(jsonFilePath), Attributes.class);
我尝试查看多态反序列化,但需要 json 对象中的类型信息,而这在我的 json 中不存在?
关于如何做到这一点的任何提示?
PS: 我无法更改 json 格式。 键列表不受限制/限制。
【问题讨论】:
-
您可能必须使用自定义
JsonDeserializer映射到您的任一Attribute实现,具体取决于您获得的是数组还是对象。
标签: java json serialization jackson json-deserialization