【发布时间】:2020-08-15 03:26:27
【问题描述】:
我正在尝试将 json 反序列化为对象。但是,json 有重复的键。我无法更改 json,我想使用 Jackson 将重复键更改为列表。
这是我检索到的 json 示例:
{
"myObject": {
"foo": "bar1",
"foo": "bar2"
}
}
这是反序列化后我想要的:
{
"myObject": {
"foo": ["bar1","bar2"]
}
}
我这样创建了我的课程:
public class MyObject {
private List<String> foo;
// constructor, getter and setter
}
我尝试使用objectMapper 中的DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY,但它所做的只是获取最后一个键并将其添加到列表中,如下所示:
{
"myObject": {
"foo": ["bar2"]
}
}
这是我的objectMapperconfiguration:
new ObjectMapper().configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);
有没有办法使用 Jackson 将重复键反序列化到列表中?
【问题讨论】:
-
我认为
ObjectMapper不可能,这不是一个有效的 json。你必须使用JsonParser -
@AlexRudenko 我不想添加另一个依赖项,但它看起来像另一个解决方案。
-
@Oleg 我可以试试
JsonParser,但我想我必须为此创建一个自定义反序列化器。如果可能的话,我想在不这样做的情况下找到解决方案。
标签: java json spring-boot jackson