我想JSON string对两种消息使用相同的POJO 反序列化。看看下面的消息
{
"success": true,
"data": [
{
"id": 2,
"comments": null
},
{
"id": 3,
"comments": null
}
]
}
Run Code Online (Sandbox Code Playgroud)
数据是数组,但有时数据是单个对象:
{
"success": true,
"data":
{
"id": 2,
"comments": null
}
}
Run Code Online (Sandbox Code Playgroud)
我的POJO看起来像这样:
public void setData(List<Object> data)
{
this.data = data;
}
Run Code Online (Sandbox Code Playgroud)
有没有办法使用相同的类反序列化第二条消息(数据不是数组)?
亲切的问候,里卡多
我还没有使用过它,但是有一个反序列化功能可以在反序列化上实现:
ACCEPT_SINGLE_VALUE_AS_ARRAY(默认值:false)
允许从非JSON数组值自动转换为单元素数组和集合(添加隐式“数组包装器”):有时对于互操作性是必要的,因为某些库和框架在序列化单元素数组时会省略JSON数组。
看起来也有相反的序列化(将单个元素数组写入非JSON数组
UNWRAP_SINGLE_VALUE_ARRAYS(默认值:false)(从2.4开始)
允许从单元素数组自动转换为非JSON数组值:这类似于ACCEPT_SINGLE_VALUE_AS_ARRAY功能,但工作方式相反(即,如果绑定属性不是数组或集合,则为单个值数组) JSON绑定到该属性是可以接受的)。如果JSON值在数组中包含多个元素,则反序列化仍将失败。
参见https://github.com/FasterXML/jackson-databind/wiki/Deserialization-Features
我不确定是否可以针对特定领域执行此操作。似乎是全有或全无的事情。
希望这可以帮助!