合并JSON的数组 [英] Merge Arrays of JSON
本文介绍了合并JSON的数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
所以我的目标是合并json文件,获得以下格式:
{
"title": "NamesBook",
"list": [
{
"name": "Ajay"
},
{
"name": "Al"
}
]
}
我有如下格式的文件:
blahblah.json
{
"title": "NamesBook",
"list": [
{
"name": "Ajay"
}
]
}
BlueBlue.json
{
"title": "NamesBook",
"list": [
{
"name": "Al"
}
]
}
我可以使用以下内容将我所有姓名的列表数组存储在一个变量中:
x = jq -s '.[].list' *.json
然后我计划将变量追加到我创建的文件out.json中的一个空数组中,如下所示:
{
"type": "NamesBook",
"list": []
}
但是,当我的脚本超出行时
jq '.list[] += "$x"' out.json'
出现JQ错误:
无法循环访问空值。
即使在添加随机元素时,也会出现相同的错误。关于我应该如何进行的小贴士?JQ中还有其他工具可以帮助实现数组合并吗?
推荐答案
您可以使用添加(JQ1.3+)合并您的文件:
jq -s '.[0].list=[.[].list|add]|.[0]' *.json
或展平(JQ 1.5+):
jq -s '.[0].list=([.[].list]|flatten)|.[0]' *.json
[.[].list]
-创建包含所有"list"数组的数组
[
[
{
"name": "Ajay"
}
],
[
{
"name": "Al"
}
]
]
[.[].list]|flatten
-展平(或.[].list|add
-将所有数组加在一起)
[
{
"name": "Ajay"
},
{
"name": "Al"
}
]
.[0].list=([.[].list]|flatten)|.[0]
-用合并后的列表替换第一个"列表",并将其输出。
{
"title": "NamesBook",
"list": [
{
"name": "Ajay"
},
{
"name": "Al"
}
]
}
这篇关于合并JSON的数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文