JoltTransformJSON - 3 个 JSON 转换

问题描述

我正在使用 JoltTransformJSON 处理器,我认为它非常强大但使用起来很复杂,而且没有太多关于它的文档。

我有以下输入 JSON:

{
   "logTypeCode":"FIN","eventNumber":"1","eventTime":1568066703172,"eventInfo":{
      "eventId":"CREATE_DOMESTIC_STANDING_ORDER","eventVersion":"1"
   },"operationInfo":{
      "operationId":"DOMESTIC_STANDING_ORDER"
   }
}

还有我想要的输出 JSON:

{
   "body":{
      "logTypeCode":"END_OF_TESTING","eventInfo":{
         "eventId":"CREATE_DOMESTIC_STANDING_ORDER","eventVersion":"1"
      },"operationInfo":{
         "operationId":"DOMESTIC_STANDING_ORDER"
      }
   },"header":{
      "date":"${dateInPropertiesFlow}"
   },"customValue":{
      "logTypeCode":"END_OF_TESTING","ENV":"${anotherPropertie}"
   }
}

基本上,我想将所有出现在“body”字段中的内容分组,然后我需要创建另一个名为“header”的字段,其中包含一个名为“date”的字段,其中包含一个属性值流来找我,最后我需要一个名为“customValue”的字段,其中值“logTypeCode”必须与“body.logTypeCode”中的字段具有相同的值。

我在应用程序 https://jolt-demo.appspot.com/#inception 中尝试了多种方法,但我无法让它按我想要的方式工作,目前这是我得到的最接近的方法......

[
  {
    "operation": "shift","spec": {
      "*": "body.&"
    }
   },{
    "operation": "default","spec": {
      "header": {
        "date": "${paramDate}"
      }
    }
  }
]

我已经做了很多测试,但我无法得到我需要的结果...帮助!

解决方法

您可以通过modify-overwrite-beta操作例如

开始结束规范
[
  {
    "operation": "modify-overwrite-beta","spec": {
      "logTypeCode": "END_OF_TESTING"
    }
  },{
    "operation": "shift","spec": {
      "*": "body.&"
    }
  },{
    "operation": "default","spec": {
      "header": {
        "date": "${dateInPropertiesFlow}"
      },"customValue": {
        "logTypeCode": "logTypeCode","ENV": "${anotherPropertie}"
      }
    }
  },{
    "operation": "modify-overwrite-beta","spec": {
      "customValue": {
        "logTypeCode": "@(2,body.logTypeCode)"
      }
    }
  }
]