使用jq / bash将父元素添加到json对象

时间:2017-05-13 07:47:31

标签: json bash jq

我想为文件中的每个json对象添加父级。 我的出发点是以下包含两个json项的json文件:

{
  "id": {
    "S": "cf7ebec368f241ead7ecf818ce9ed098406afa63"
  },
  "test": {
    "N": "5"
  },
  "added": {
    "S": "2017-02-15T17:56:19.958917+00:00"
  },
  "foo": {
    "N": "88"
  },
  "web": {
    "N": "103"
  }
}
{
  "id": {
    "S": "cf7ebec368f241ead7ecf818ce9ed098406afa63"
  },
  "image_server_id": {
    "N": "5"
  },
  "added": {
    "S": "2017-02-15T17:56:19.958917+00:00"
  },
  "result": {
    "N": "88"
  },
  "data": {
     "foo": {
       "N": "103",
       "S": "test"
     }
  }
}

使用jq和/或bash我想生成以下json文件:

{
   "*StaticString*": [
     {
        "PutRequest": {
            "Item": {
               "id": {
                 "S": "cf7ebec368f241ead7ecf818ce9ed098406afa63"
               },
               "test": {
                 "N": "5"
               },
               "added": {
                 "S": "2017-02-15T17:56:19.958917+00:00"
               },
               "foo": {
                 "N": "88"
               },
               "web": {
                 "N": "103"
               }   
            **}
         }
     },
     {
        "PutRequest": {
            "Item": {
               "id": {
                 "S": "cf7ebec368f241ead7ecf818ce9ed098406afa63"
               },
               "image_server_id": {
                 "N": "5"
               },
               "added": {
                 "S": "2017-02-15T17:56:19.958917+00:00"
               },
               "result": {
                 "N": "88"
               },
               "data": {
                 "foo": {
                   "N": "103",
                   "S": "test"
                 }
               }  
            **}
        }
     }
   ]
  }

总结一下,我想添加

{
"StaticString": [
{

在文件的开头。 然后我需要将每个json项放入父

   "PutRequest": {
            "Item": {
            ...
            }
   }

并从json项中生成一个数组。

我已经知道如何使用生成json项的数组 jq -s . testfile.json 但我不知道如何为每个json项添加父项。

我希望很清楚我想要实现的目标。

感谢您的帮助, 克里斯

1 个答案:

答案 0 :(得分:3)

尝试

  • jq -s '{staticstring:[{PutRequest:{Item:.[]}}]}' inputfile.json