代码之家  ›  专栏  ›  技术社区  ›  Romain

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

  •  0
  • Romain  · 技术社区  · 2 年前

    我正在尝试创建一个新文件,添加country1中定义的对象。json进入世界。json。基本上:

    世界json

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

    +

    country1.json

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

    =

    world\u country1。json

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

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

    谢谢你的帮助, 最好的 罗曼

    1 回复  |  直到 2 年前
        1
  •  2
  •   pmf    2 年前

    使用 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