相关疑难解决方法(0)

JSON语法是否允许对象中的重复键?

这是有效的json吗?

{
    "a" : "x",
    "a" : "y"
}
Run Code Online (Sandbox Code Playgroud)

http://jsonlint.com/说是的.

http://www.json.org/没有说明被禁止的事情.

但显然它没有多大意义,是吗?大多数实现可能使用哈希表,因此无论如何它都被覆盖.

standards json

179
推荐指数
7
解决办法
8万
查看次数

JSON字段具有相同的名称

实际上,键必须在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 key duplicates on-duplicate-key jq

4
推荐指数
1
解决办法
4184
查看次数

使用 Jackson 反序列化重复键以列出

我正在尝试将 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 将重复的键反序列化到列表中?

java json jackson spring-boot

3
推荐指数
1
解决办法
3628
查看次数

标签 统计

json ×3

duplicates ×1

jackson ×1

java ×1

jq ×1

key ×1

on-duplicate-key ×1

spring-boot ×1

standards ×1