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

JQ向嵌套数组中的嵌套对象添加属性

  •  1
  • rascio  · 技术社区  · 7 年前

    我有以下json:

    {
      "first": {
        "second" : "A"
      },
      "array": [
        {
          "name" : "AAA",
          "something": {
            "hola": "hi"
          }
        },
        {
          "name" : "BBB",
          "something": {
            "hola": "hi"
          }
        }
      ]
    }
    

    我想将它转换为将属性添加到 something 对象,使用 name 父对象的属性,例如:

    {
      "first": {
        "second" : "A"
      },
      "array": [
        {
          "name" : "AAA",
          "something": {
            "hola": "hi",
            "NEW_PROPERTY": "AAA"
          }
        },
        {
          "name" : "BBB",
          "something": {
            "hola": "hi",
            "NEW_PROPERTY": "BBB"
          }
        }
      ]
    }
    

    哪个jq表达式可以做到这一点?

    2 回复  |  直到 7 年前
        1
  •  4
  •   oliv    7 年前

    试试这个jq脚本:

    <file jq '.array = [ .array[] | .something.NEW_PROPERTY = .name ]'
    

    这将取代 array NEW_PROPERTY .

        2
  •  0
  •   peak    7 年前

    .array |= map(.something.NEW_PROPERTY = .name)
    

    或者如果 map

    .array[] |= (.something.NEW_PROPERTY = .name)