如何子串化JSON转换?以及JOLT“范围”的工作原理是什么?

问题描述

我正在尝试使用JOLT转换,但这确实是一团糟,如何使用JSON转换将该ipnut转换为此输出?我不了解JOLT的正当性。当我尝试对“客户端”进行子字符串化时,此方法有效,但是当我对“日期”进行相同操作时,则不起作用....

[INPUT]
    {
      "client": "18f085b6-eca2-4f20-a5da-910b9043c8b3","name": "clientName","dateControl": {
        "date": "2020-07-16T14:08:53.708671+00:00"
      }
    }
[OUTPUT]
    {
          "client": "18f085b6-eca2-4f20-a5da-910b9043c8b3","dateControl": {
            "date": "20200716"
          }
        }

解决方法

您可以在Jolt Spec下面尝试。

输入

{
  "dateTime": "2020-07-16T14:08:53.708671+00:00"
}

震动规格

[
  {
    "operation": "modify-overwrite-beta","spec": {
      "dateTime": "=substring(@(1,dateTime),10)"
    }
  }
]

输出

{
  "dateTime" : "2020-07-16"
}

,

输入:

{
  "client": "18f085b6-eca2-4f20-a5da-910b9043c8b3","name": "clientName","dateControl": {
    "date": "2020-07-16T14:08:53.708671+00:00"
  }
}

震动:

[
  {
    "operation": "modify-overwrite-beta","spec": {
      "dateControl": {
        "temp_substring": "=substring(@(1,date),10)","temp_split": "=split('-',@(1,temp_substring))","date": "=concat(@(1,temp_split[0]),temp_split[1]),temp_split[2]))"
      }
    }
  },{
    "operation": "remove","spec": {
      "dateControl": {
        "temp_substring": "","temp_split": ""
      }
    }
  }
]

结果:

{
  "client" : "18f085b6-eca2-4f20-a5da-910b9043c8b3","name" : "clientName","dateControl" : {
    "date" : "20200716"
  }
}