问题描述
我正在使用 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)"
}
}
}
]