通过命令行向 JSON 添加一个父属性

Adding One more Parent Attrubute To JSON through Command line

我想使用终端命令或脚本通过终端编辑 json 的结构。 如果我有这样的 json 文件结构:

      {
      "Helloo": [
        {

          "AlbumTitle": {
            "S": "Famous"
          },
          "SongTitle": {
            "S": "Call Me Today"
          },
          "Artist": {
            "S": "No One You Know"
          }

        },
{

          "AlbumTitle": {
            "S": "Famous1"
          },
          "SongTitle": {
            "S": "Call Me Today1"
          },
          "Artist": {
            "S": "No One You Know11"
          }

        }
      ],
      "Music": [
        {

          "Album": {
            "S": "Pop Songs"
          },
          "Production": {
            "S": "X-series"
          },
          "Song": {
            "S": "Once upon
          },
          "Artist": {
            "S": "XYZ"
          }

        }
      ]
    }

所以在这里我想为数组的每个项目添加 "Putrequest" 和 "Item" 属性。所以我想要这样的输出:

 {
      "Helloo": [
        {
        PutRequest":{  
            "Item":{ 

          "AlbumTitle": {
            "S": "Famous"
          },
          "SongTitle": {
            "S": "Call Me Today"
          },
          "Artist": {
            "S": "No One You Know"
          }

        }
        }
        },
{
PutRequest":{  
            "Item":{ 

          "AlbumTitle": {
            "S": "Famous1"
          },
          "SongTitle": {
            "S": "Call Me Today1"
          },
          "Artist": {
            "S": "No One You Know11"
          }

        }
        }
        }
      ],
      "Music": [
        {
PutRequest":{  
            "Item":{ 
          "Album": {
            "S": "Pop Songs"
          },
          "Production": {
            "S": "X-series"
          },
          "Song": {
            "S": "Once upon
          },
          "Artist": {
            "S": "XYZ"
          }
}
}
        }
      ]
    }

我尝试为此使用 Jq,但仍在苦苦挣扎。请帮助我使用命令提示符或 bash/shell 脚本将这些属性添加到 json。 谢谢

假设您实际上获得了有效 JSON 以下 jq 表达式可能适合您:

map_values(map({"PutRequest": { "Item": .}}))

用法:

jq 'map_values(map({"PutRequest": { "Item": .}}))' file.json

细分:

map_values(           # Map values iterate over an object and assign the 
                      # returned value to the property
  map(                # Map iterate over an array and assign the returned value
                      # to the index, and creates a new array if an object is
                      # mapped
    {                 # Return an object
      "PutRequest": { # With PutRequest as a property
        "Item": .     # And Item, which contains the value (.)
      }
    }
  )
)