使用 bash/jq 将 json 对象添加到另一个 json 对象中

Add json object into another json object using bash/jq

我正在尝试创建一个新文件,将 country1.json 中定义的对象添加到 world.json 中。本质上:

world.json

{
    "class": "world",
    "version": "1.1.0"
}

+

country1.json

{
    "class": "country",
    "country_1": {
        "class": "city",
        "name": "seattle"
    }
}

=

世界_country1.json

{
    "class": "world",
    "version": "1.1.0",
    "country1": {
        "class": "country",
        "country_1": {
            "class": "city",
            "name": "seattle"
        }
    }
}

使用 country1.json 文件中对象的文件名。如果可能,我想使用 bash/jq。

感谢您的帮助, 最好, 罗曼

使用input访问第二个文件,使用>重定向到另一个文件

jq '.country1 = input' world.json country1.json > world_country1.json
{
  "class": "world",
  "version": "1.1.0",
  "country1": {
    "class": "country",
    "country_1": {
      "class": "city",
      "name": "seattle"
    }
  }
}

Demo


如果要使用文件名作为新字段的名称,请使用 input_filename 并删除最后 5 个字符(删除 .json):

jq '. + (input | {(input_filename[:-5]): .})' world.json country1.json > world_country1.json