json If条件+与JOLT连接

nzrxty8p  于 2023-11-20  发布在  其他
关注(0)|答案(1)|浏览(101)

我有一个JSON:

[
  {
    "id": 0,
    "error_code": 603,
    "error_desc": "Some ads error occurs: URL needed.",
    "taskId": 630
  },
  {
    "id": 36154,
    "taskId": 631
  }
]

字符串
如果id等于0,则会出现error_codeerror_desc键。我想得到这个结果:

[
  {
    "id": 0,
    "taskStatus": "ERROR",
    "errorMessage": "603|Some ads error occurs: URL needed.",
    "taskId": 630
  },
  {
    "id": 36154,
    "taskStatus": "SUCCESS",
    "errorMessage": null,
    "taskId": 631
  }
]


如果id!= 0,则taskStatus应设置为ERROR,如果id!= 0,则SUCCESS应设置为ERRORerrorMessageerror_code + | + error_desc,如果id!= 0,则为空。
有没有可能用JOLT来做?它看起来像一个if-else条件,我没有用过。

332nm8kg

332nm8kg1#

您可以在shift中应用条件,而在modify转换中应用串联,例如

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "id": {
          "@": "[&2].&", // replicate "id" itself
          "0": { // if "id" = 0
            "#ERROR": "[&3].taskStatus",
            "@2,error_code|@2,error_desc": "[&3].errorMessage"
            // combine the error related attributes within a common array
          },
          "*": { // if "id" != 0
            "#SUCCESS": "[&3].taskStatus",
            "@": "[&3].errorMessage"
          }
        },
        "taskId": "[&1].&"
      }
    }
  },
  { // concatenate the components of the "errorMessage" array
    "operation": "modify-overwrite-beta",
    "spec": {
      "*": {
        "err*": "=join('|',@(1,&))"
      }
    }
  }
]

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


的数据

相关问题