JOLT 转换,将属性复制到同级的字典中

问题描述 投票:0回答:1

下面是我的 JSON

[
  {
    "id": "0",
    "bucket_attr1": "test1",
    "buckets": ["abc", "def", "mhf"]
  },
  {
    "id": "1",
    "bucket_attr1": "test2",
    "buckets": ["abc", "ghi"]
  }
]

我想将id和bucket_attr1复制到buckets数组中的每个map中,这样输出如下

[
      {
        "bucket_id": "abc",
        "bucket_attr1": "test1",
        "id": "0"
      },
      {
        "bucket_id": "def",
        "bucket_attr1": "test1",
        "id": "0"
      },
      {
        "bucket_id": "mhf",
        "bucket_attr1": "test1",
        "id": "0"
      }
      {
        "bucket_id": "abc",
        "bucket_attr2": "test2",
        "id": "1"

      },
      {
        "bucket_id": "ghi",
        "bucket_attr2": "test2",
        "id": "1"
      }
  
]

我尝试了几种方法,包括这里提到的,稍加修改后,但没有成功。 Jolt 变换以移动数组每个元素中的属性

json jolt
1个回答
0
投票

您可以使用以下移位转换规范:

[
  {// separate by indexes from two different levels
    "operation": "shift",
    "spec": {
      "*": {
        "buckets": {
          "*": {
            "@": "&3_&1.bucket_id",
            "@2,id": "&3_&1.id",
            "@2,bucket_attr1": "&3_&1.bucket_attr1"
          }
        }
      }
    }
  },
  {// get rid of the separator keys of the objects
    "operation": "shift",
    "spec": {
      "*": "[]"
    }
  }
]
© www.soinside.com 2019 - 2024. All rights reserved.