json Jolt变换在嵌套数组中添加唯一标识符

tpxzln5u  于 2023-08-08  发布在  其他
关注(0)|答案(1)|浏览(90)

我需要帮助使用jolt转换为json包嵌套数组添加唯一标识符。
我需要唯一的标识符,以便如果这个JSON数据包数组被分解,我可以重新创建相同的数组在相同的顺序。

输入

{
  "column1": "value1",
  "column2": {
    "item": [
      {
        "itemname": "x"
      },
      {
        "itemname": "y"
      },
      {
        "itemname": "z"
      }
    ]
  },
  "column3": [
    {
      "itemcat": "a"
    },
    {
      "itemcat": "b"
    },
    {
      "itemcat": "c"
    }
  ]
}

字符串

输出

{
  "column1": "value1",
  "column2": {
    "item": [
      {
        "itemname": "x",
        "identifier": "item_0"
      },
      {
        "itemname": "y",
        "identifier": "item_1"
      },
      {
        "itemname": "z",
        "identifier": "item_2"
      }
    ]
  },
  "column3": [
    {
      "itemcat": "a",
      "identifier": "column3_0"
    },
    {
      "itemcat": "b",
      "identifier": "column3_1"
    },
    {
      "itemcat": "c",
      "identifier": "column3_2"
    }
  ]
}

zrfyljdw

zrfyljdw1#

您可以使用以下转换

[
  {
    "operation": "shift",
    "spec": {
      "*": "&", // column1
      "c*2|c*3": { // column2 / 3
        "item": {
          "*": {
            "@": "&3.&2[&1]", // return current key-value pairs
            "$1|$": "&3.&2[&1].identifier" // return the literal "item" along with indexes(0,1,2)
                                           // they constructs array values
          }
        },
        "*": {
          "@": "&2[&1]",
          "$1|$": "&2[&1].identifier"
        }
      }
    }
  },
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "c*2": {
        "*": {
          "*": {
            "*": "=join('_',@(1,&))" // concatenate the components of the generated arrays
          }
        }
      },
      "c*3": {
        "*": {
          "*": "=join('_',@(1,&))"
        }
      }
    }
  }
]

字符串
网站http://jolt-demo.appspot.com/上的 * 演示 * 是:


的数据

相关问题