Java JOLT-基于if条件在JSONArray中添加字段
我有一个有点棘手的问题要问,据我所知,我还没有见过任何人有同样的问题,至少不是所有人都有 我需要转换以下测试JSON: 输入Java JOLT-基于if条件在JSONArray中添加字段,java,json,apache-camel,transform,jolt,Java,Json,Apache Camel,Transform,Jolt,我有一个有点棘手的问题要问,据我所知,我还没有见过任何人有同样的问题,至少不是所有人都有 我需要转换以下测试JSON: 输入 [ { "test_id": 1212101011, "someDate": "2020-03-06", "keyToCheck": "true", "someData": "123" }, { "test_id": 8787909099, "someDate": "2020-03-09", "keyTo
[
{
"test_id": 1212101011,
"someDate": "2020-03-06",
"keyToCheck": "true",
"someData": "123"
},
{
"test_id": 8787909099,
"someDate": "2020-03-09",
"keyToCheck": "false",
"someData": "456"
}
]
我试图得到以下输出
所需的
[{
"test_id": 1212101011,
"someDate": "2020-03-06",
"keyToCheck": "true",
"someData": "123",
"objToAdd": {
"id": "1",
"label": "dummy1"
}
},{
"test_id": 8787909099,
"someDate": "2020-03-09",
"keyToCheck": "false",
"someData": "456",
"objToAdd": {
"id": "2",
"label": "dummy2"
}]
我已经设法传播了所有的值,并在需要时更改了字段的名称,但是添加一个条件只会破坏一切。另外,对于我现有的规范,我不会在转换后得到一个数组,而我以前的规范已经可以得到这个数组
到目前为止,我掌握的规范是:
使用的规范
[
{
"operation": "shift",
"spec": {
"*": {
"keyToCheck": {
"true": {
"#1": "objToAdd.id",
"#dummy1": "objToAdd.label"
},
"false": {
"#2": "objToAdd.id",
"#dummy2": "objToAdd.label"
}
}
}
}
}
]
但正如前面所说,它只给了我这个:
迄今为止的结果
{
"objToAdd" : {
"id" : [ "1", "2" ],
"label" : [ "dummy1", "dummy2" ]
}
}
这似乎是压痕的问题。在条件中的值之前添加[&1]没有帮助,当我使用“*”:“[&1]”传播值时,我将丢失if-else条件生成的项
有没有办法做到这一点?
任何帮助都将不胜感激!提前感谢。检查此规格
[
{
"operation": "shift",
"spec": {
"*": {
"test_id": "[&1].test_id",
"someDate": "[&1].someDate",
"someData": "[&1].someData",
"keyToCheck": {
"true": {
"$": "[&3].keyToCheck",
"#1": "[&3].objToAdd.id",
"#dummy1": "[&3].objToAdd.label"
},
"false": {
"$": "[&3].keyToCheck",
"#2": "[&3].objToAdd.id",
"#dummy2": "[&3].objToAdd.label"
}
}
}
}
}
]