Jolt 转换嵌套数组和对象

Jolt Transformation Nested Arrays and Objects

我正在尝试为以下输入创建颠簸转换:

{
  "admin": [
    {
      "heading": "header1",
      "fields": [
        {
          "description": "Name",
          "value": "John"
        },
        {
          "description": "Foo",
          "value": "Bar"
        }
      ],
      "id": "123456"
    },
    {
      "heading": "header2",
      "fields": [
        {
          "description": "Name",
          "value": "Jane"
        },
        {
          "description": "Foo",
          "value": "Bar"
        }
      ],
      "id": "789123"
    }
  ]
}

所需输出为:

{
  "admin": 
    {
      "header1": 
        {
          "Name" : "John",
          "Foo": "Bar",
          "id": "123456"
        },

      "header2": 
        {
          "Name" : "Jane",
          "Foo": "Bar"
          "id": "789123"
        },
    }
}

我刚刚开始了解摇晃变换的基础知识,但这对于嵌套结构来说似乎有点复杂。

此规范可满足您的需求

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "*": {
          "id": "admin.@(1,heading).id",
          "*": {
            "*": {
              "value": "admin.@(3,heading).@(1,description)"
            }
          }
        }
      }
    }
  }
]

此规范循环遍历字段数组,并将描述字段与使用值查找上一级的键相匹配。