Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JOLT-基于if条件在JSONArray中添加字段_Java_Json_Apache Camel_Transform_Jolt - Fatal编程技术网

Java JOLT-基于if条件在JSONArray中添加字段

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

我有一个有点棘手的问题要问,据我所知,我还没有见过任何人有同样的问题,至少不是所有人都有

我需要转换以下测试JSON:

输入

[
  {
    "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"
          }
        }
      }
    }
  }
]