json 如何使用Jolt合并两个数组来创建键值对?

rpppsulh  于 2023-02-14  发布在  其他
关注(0)|答案(2)|浏览(142)

我已经创建了一个规范来转换JSON输入

{
  "rows": [
    {
      "row": [
        "row1",
        "row2",
        "row3"
      ],
      "header": [
        "header1",
        "header2",
        "header3"
      ]
    },
    {
      "row": [
        "row4",
        "row5",
        "row6"
      ],
      "header": [
        "header4",
        "header5",
        "header6"
      ]
    }
  ]
}

转换为键值对,作为以下对象结果:

{
  "header1" : "row1",
  "header2" : "row2",
  "header3" : "row3",
  "header4" : "row4",
  "header5" : "row5",
  "header6" : "row6"
}

这可以用Jolt实现吗?

webghufk

webghufk1#

在你的输入中有复制/粘贴错误吗?根据你想要的输出判断,第二个对象的header数组应该是["header4", "header5", "header6"]。如果是这样的话,这个规范应该可以工作:

[
  {
    "operation": "shift",
    "spec": {
      "rows": {
        "*": {
          "header": {
            "*": {
              "*": {
                "@(3,row[#2])": "&"
              }
            }
          }
        }
      }
    }
  }
]
fnx2tebb

fnx2tebb2#

一个选项是使用以下shift转换规范:

[
  {
    "operation": "shift",
    "spec": {
      "*s": { // rows array
        "*": {
          "&(1,1)": { // row array
            "*": {
              "@": "@(3,header[&1])"
            }
          }
        }
      }
    }
  }
]

其中

"*s": {代表行s
"&(1,1)": {-〉不是直接( 第零 * 个)级别,而是使用
*&(1,向上一级,并获取&(..,1)存在的第一个星号处的值
*"@": "@(3,header[&1])"-〉
3右侧所述的级别也遍历冒号,以便到达用于表示"row"数组的级别&(1,1),以及&1表示,以便在树中向上一级到达数组"row"的索引,同时与 * 的值匹配"row"通过使用左手的@*

站点http://jolt-demo.appspot.com/上的***演示***为:

相关问题