【问题标题】:How to merge two json files with jq如何用jq合并两个json文件
【发布时间】:2019-11-28 14:24:06
【问题描述】:

我有一个包含以下结构的 json 文件的目录 例如:file1

{
    "products": [
        {"f1": "v1"},
        {"f1": "v2"}
    ]
}

文件2:

{
    "products": [
        {"f1": "v3"},
        {"f1": "v4"}
    ]
}

“.products”的内容与示例中的不同,但我们可以假设它们是格式良好的更复杂的 json 值。

我想生成一个具有以下结构的文件:

[
    {"f1": "v1"},
    {"f1": "v2"},
    {"f1": "v3"},
    {"f1": "v4"}
]

关于如何使用 jq 做到这一点的任何想法?

【问题讨论】:

    标签: json file merge jq


    【解决方案1】:

    您可以使用以下内容:

    jq --slurp 'map(.products[])' /path/to/dir/*.json
    

    其中/path/to/dir/*.json 应该是文件列表或bash glob,它将扩展为您要使用的 JSON 文件列表。例如,对于当前目录中的两个文件 file1file2,您可以使用 file{1,2},或者简单地使用 file1 file2,这是之前的 glob 将扩展为的内容。

    --slurp 标志告诉jq 读取数组中的所有输入,而不是单独处理它们。然后我们将这个数组的每个对象(文件的原始内容)映射到它们的产品序列中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-07
      • 2019-06-11
      • 1970-01-01
      • 2021-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多