首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用JQ将一个文件中的两个JSON片段合并

使用JQ将一个文件中的两个JSON片段合并
EN

Stack Overflow用户
提问于 2021-01-20 16:08:52
回答 1查看 67关注 0票数 2

我获得了一个脚本的输出,该脚本将两个结构相同的JSON片段输出到一个文件中:

代码语言:javascript
运行
复制
{
    "Objects": [
        {
            "Key": "somevalue",
            "VersionId": "someversion"
        }
    ],
    "Quiet": false
}
{
    "Objects": [
        {
            "Key": "someothervalue",
            "VersionId": "someotherversion"
        }
    ],
    "Quiet": false
}

我希望通过JQ将这个输出传递给一个Objects[]列表,将两个列表中的所有对象连接起来,并输出相同的总体结构。我可以通过两个单独的JQ命令之间的管道来完成它:

代码语言:javascript
运行
复制
jq '.Objects[]' inputfile | jq -s '{"Objects":., "Quiet":false}' -

但是,我想知道是否有一种更优雅的方法,只使用一次JQ调用。

我目前使用的JQ版本1.5,但可以更新,如果需要。

EN

回答 1

Stack Overflow用户

发布于 2021-01-20 16:26:08

您可以使用reduce

代码语言:javascript
运行
复制
jq -s 'reduce .[] as $item ({ Quiet: false }; .Objects += $item.Objects)'

看吧,在行动中

正如@oguz在评论中所建议的那样,可以使用-s (slurp)标志,在第一个条目之后使用inputs获取其余条目:

代码语言:javascript
运行
复制
jq 'reduce inputs as $item (.; .Objects += $item.Objects)'

看吧,在行动中

这两个版本都可以处理输入中的任意数量的条目(第二个版本至少需要一个)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65813245

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档