json JOLT -嵌套数组和

eni9jsuy  于 2023-03-09  发布在  其他
关注(0)|答案(2)|浏览(234)

我无法找到这种转换的解决方案,我的目标是将所有部分相加,并将其存储到一个长度与operations相同的数组中。
输入数据:

{
  "operations": [
    {
      "partOne": 10,
      "partTwo": 12.5,
      "partThree": 30.5
    },
    {
      "partOne": 25.5,
      "partTwo": 2,
      "partThree": 7.5
    }
  ]
}

输出数据:

{
  "costs": [
    53, // operations[0].partOne + operations[0].partTwo + operations[0].partThree
    35 // operations[1].partOne + operations[1].partTwo + operations[1].partThree
  ]
}

EDIT:我能够找到这个中间步骤,但仍然缺少求和部分。

[
  {
    "operation": "shift",
    "spec": {
      "operations": {
        "*": {
          "partOne": "costs[&1].[]",
          "partTwo": "costs[&1].[]",
          "partThree": "costs[&1].[]"
        }
      }
    }
  },
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "*": {
        "costs": "=doubleSum(@(1,costs[&1]))"
      }
    }
  }
]

另外,如果你能分享一些关于JOLT规范的文档,我将非常感激。找不到任何东西让我正确地开始。

fcwjkofz

fcwjkofz1#

您可以在当前的移位操作之间添加另一个移位操作,如通过去掉方括号重新排列,如下所示:

[
  {
    "operation": "shift",
    "spec": {
      "operations": {
        "*": {
          "partOne": "costs&1",
          "partTwo": "costs&1",
          "partThree": "costs&1"
        }
      }
    }
      },
  {
    "operation": "shift",
    "spec": {
      "*": "&"
    }
      },
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "tot_costs0": "=doubleSum(@(1,costs0))",
      "tot_costs1": "=doubleSum(@(1,costs1))"
    }
  }
]

这个消息来源可能会有帮助。

ia2d9nvy

ia2d9nvy2#

我找到了解决办法。
质量标准:

[
  {
    "operation": "shift",
    "spec": {
      "operations": {
        "*": {
          "partOne": "costs[&1].[]",
          "partTwo": "costs[&1].[]",
          "partThree": "costs[&1].[]"
        }
      }
    }
  },
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "costs": {
        "*": "=doubleSum"
      }
    }
  }
]

相关问题