我如何使用 JACKSON 在 JAVA 中映射一个来自 JSON 的数组,它可以包含不同类型的对象作为项目?
How can I map in JAVA with JACKSON an array from a JSON which can contain differently typed objects as items?
正如您在下面的示例中看到的,attributes
数组中的第一项是由两个字符串属性组成的对象。第二个对象由字符串和数组 属性 组成。我想将这两种类型的 JSON 对象解码为 Java 对象的集合。
我如何在 POJO java class 中表达这个来处理像这样的解码 JSON?
attributes:[
{
"attribute_code": "has_options",
"value": "0"
},
{
"attribute_code": "ewc_top_quick",
"value": [
{
"label": "Display",
"value": "12.5",
"suffix": "''"
},
{
"label": "Grafica Integrata",
"value": "1",
"suffix": ""
}
]
}
]
因此,您可以在此字段中使用 Map<String, Object>
。
class Attr {
private String attribute_code;
private Map<String, Object> value;
}
在此之后,您可以使用此对象。
此外,您可以使用 @JsonAnySetter
。它与之前的选项类似。
解决您的情况的最佳方法是自定义解串器。我强烈推荐这个选项。
正如您在下面的示例中看到的,attributes
数组中的第一项是由两个字符串属性组成的对象。第二个对象由字符串和数组 属性 组成。我想将这两种类型的 JSON 对象解码为 Java 对象的集合。
我如何在 POJO java class 中表达这个来处理像这样的解码 JSON?
attributes:[
{
"attribute_code": "has_options",
"value": "0"
},
{
"attribute_code": "ewc_top_quick",
"value": [
{
"label": "Display",
"value": "12.5",
"suffix": "''"
},
{
"label": "Grafica Integrata",
"value": "1",
"suffix": ""
}
]
}
]
因此,您可以在此字段中使用 Map<String, Object>
。
class Attr {
private String attribute_code;
private Map<String, Object> value;
}
在此之后,您可以使用此对象。
此外,您可以使用 @JsonAnySetter
。它与之前的选项类似。
解决您的情况的最佳方法是自定义解串器。我强烈推荐这个选项。