JOLT删除嵌套JSON中的列表级别

问题描述

我有JSON文件,其中的元素嵌入到列表中,并具有不必要的子级别。我需要使用JOLT简化此结构,但我不知道如何做。我查看了类似的问答,但是没有找到足够相似的示例。

以下是输入内容

{
  "datasets": [{
    "datasetid": "id_of_1st_dataset","Metas": {
      "domain": "mydomain","records_count": 120234,"keywords": ["foo","bar"]
    },"fields": [
      {
        "name": "1st_field_of_1st_dataset","type": "text"
      },{
        "name": "2nd_field_of_1st_dataset","type": "int"
      }
    ]
    },{
      "datasetid": "id_of_2nd_dataset","Metas": {
        "domain": "mydomain","records_count": 5402,"keywords": ["banana","bar"]
      },"fields": [
        {
          "name": "1st_field_of_2nd_dataset","type": "text"
        },{
          "name": "2nd_field_of_2nd_dataset","type": "int"
        }
      ]
    }
  ]
}

和所需的输出

{
    "datasetid": "id_of_1st_dataset","domain": "mydomain","bar"]
    "fields": [
      {
        "name": "1st_field_of_1st_dataset","bar"]
      "fields": [
        {
          "name": "1st_field_of_2nd_dataset","type": "int"
        }
      ]
    }

将输入转换为输出的正确震动SPEC是什么?预先感谢您的关注和问候。

解决方法

可以通过以下规格完成

[
  {
    "operation": "shift","spec": {
      "datasets": {
        "*": {
          "datasetid": "[&1].datasetid","fields": "[&1].fields","metas": {
            "*": {
              "@": "[&3].&"
            }
          }
        }
      }
    }
  }
]