eco*_*con 4 json key duplicates on-duplicate-key jq
实际上,键必须在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做到这一点?
小智 6
如果您的输入实际上是一个平面JSON对象,其基元为值,则应该可以:
jq -s --stream 'group_by(.[0]) | map({"key": .[0][0][0], "value": map(.[1])}) | from_entries'
{
"a": [
"1",
"3"
],
"b": [
"2"
]
}
Run Code Online (Sandbox Code Playgroud)
对于更复杂的输出,这需要实际了解--stream应该如何使用,这超出了我的范围.
| 归档时间: |
|
| 查看次数: |
4184 次 |
| 最近记录: |