【发布时间】:2018-06-14 11:01:57
【问题描述】:
我使用 jsonProperty annonation 将 json 值映射到 pojo 对象中的变量。
{
"valueSet": [
{
"name": "Type_int",
"value": 123
},
{
"name": "Type_String",
"value": "ABC"
}
]
}
对于上面的这个 json,我使用 Object 类对象来捕获“value”属性值。 喜欢
@JsonProperty("value")
private Object value;
这可以很好地捕获“整数”和“字符串”值。
但是对于下面的场景
{
"valueSet": [
{
"name": "Type_int",
"value": 123
},
{
"name": "Type_String",
"value": "ABC"
},
{
"name": "Type_array",
"value": [
{
"x": 0,
"y": 0
},
{
"x": 10,
"y": 10
},
{
"x": 20,
"y": 20
}
]
}
]
}
“值”属性有三种不同的数据类型。我不能使用对象来捕获值。那么,有什么方法可以捕获“value”属性中的所有值。
【问题讨论】:
-
为什么不能使用
Object? -
你可以,但你应该相应地投射它
-
它不适用于值数组@CassioMazzochiMolin
-
@NiveR,无法转换,它将原始 json 作为字符串返回。
-
这对于 Jackson 自定义反序列化器来说是一个完美的情况。只需扩展 StdDeserializer 并覆盖
deserialize(...)方法即可支持您需要的所有三种类型。