这是有效的json吗?
{
"a" : "x",
"a" : "y"
}
Run Code Online (Sandbox Code Playgroud)
http://www.json.org/没有说明被禁止的事情.
但显然它没有多大意义,是吗?大多数实现可能使用哈希表,因此无论如何它都被覆盖.
实际上,键必须在JSON对象中是唯一的(例如,JSON语法是否允许对象中的重复键?).但是,假设我有一个包含以下内容的文件:
{
"a" : "1",
"b" : "2",
"a" : "3"
}
Run Code Online (Sandbox Code Playgroud)
有没有一种简单的方法将重复键转换为数组?这样文件就变成了:
{
"a" : [ {"key": "1"}, {"key": "3"}],
"b" : "2"
}
Run Code Online (Sandbox Code Playgroud)
或类似的东西,但它将重复的键组合成一个数组(或查找和替代方法来提取重复的键值).
这是Java中的解决方案:将带有重复键的JSON对象转换为JSON数组
有没有办法用awk/bash/python做到这一点?
我正在尝试将 json 反序列化为对象。但是,json 有重复的键。我无法更改 json,我想使用 Jackson 将重复键更改为列表。
这是我检索的 json 的示例:
{
"myObject": {
"foo": "bar1",
"foo": "bar2"
}
}
Run Code Online (Sandbox Code Playgroud)
这是反序列化后我想要的:
{
"myObject": {
"foo": ["bar1","bar2"]
}
}
Run Code Online (Sandbox Code Playgroud)
我像这样创建了我的课程:
public class MyObject {
private List<String> foo;
// constructor, getter and setter
}
Run Code Online (Sandbox Code Playgroud)
我尝试使用DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAYfromobjectMapper但它所做的只是获取最后一个键并将其添加到列表中,如下所示:
{
"myObject": {
"foo": ["bar2"]
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的objectMapper配置:
new ObjectMapper().configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);
Run Code Online (Sandbox Code Playgroud)
有没有办法使用 Jackson 将重复的键反序列化到列表中?