使用 jq 将新的根级别属性添加到 JSON 对象

ali*_*227 2 json jq

我有一个大型 JSON 文件(大约 7K 行),其中包含深度嵌套的项目,其中缺少collection我需要添加的必需属性。当前 JSON 对象:

{
  "item": [
        {
          "id": "123",
          "name": "Customer",
          "item": [
              {
                 "id": "456",
                 "name": "Retrieve a customer"
....
Run Code Online (Sandbox Code Playgroud)

使用 bash 脚本,我需要添加一个像这样的顶级属性"collection" ,其中仍然包含相同的嵌套项。这是我想要的结果:

{
  "collection": {
    "item": [
         {
           "id": "123",
           "name": "Customer",
           "item": [
               {
                "id": "456",
                "name": "Retrieve a customer",
....       
Run Code Online (Sandbox Code Playgroud)

在 JSON 对象的末尾,我还需要}在文件末尾为新添加的collection:键匹配的右大括号。有没有办法用 JQ 做到这一点?

Cha*_*ffy 7

jq '{"collection": .}' <in.json >out.json
Run Code Online (Sandbox Code Playgroud)

如果您的 JSON 是另一个 jq 命令的输出,只需在末尾添加集合,例如:

jq '{"collection": .}' <in.json >out.json
Run Code Online (Sandbox Code Playgroud)

那么输出是:

{"records":[{"name":"Foo"},{"name":"Bar"}]}
Run Code Online (Sandbox Code Playgroud)