json数组中一个元素的数组,Nifi

Array for one element in Array of json, Nifi

我有以下输入 json:

{
  "ListArray": [
    {
      "address": "address1",
      "contact": "123456789",
      "bpId": 123
    },
    {
      "address": "address2",
      "contact": "135792468",
      "bpId": 456
    },
    {
      "address": "address3",
      "contact": "246812356",
      "bpId": 678
    }
  ]
}

我正在使用以下规范表达式:

[
  {
    "operation": "shift",
    "spec": {
      "ListArray": {
        "*": {
          "*": "&"
        }
      }
    }
  }
]

给我这样的输出:

{
 "Address_list": ["address1","address2","address3"],
 "Contact_list": ["123456789","135792468","246812356"],
 "Id_list": [123,456,678]
}

但是,如果输入(jsons的数组)只有一个json,例如:

{
  "ListArray": [
    {
      "address": "address1",
      "contact": "123456789",
      "bpId": 123
    }
  ]
}

然后我得到以下输出

{
  "Address_list": "address1",
  "Contact_list": "123456789",
  "Id_list": 123
}

对于一个元素,数组未形成。即使只有一个元素,我也希望输出在一个数组中。 提前谢谢。

只需稍作改动,将 .[] 附加到当前存在的符号 (&) 即可解决此问题,例如

[
  {
    "operation": "shift",
    "spec": {
      "ListArray": {
        "*": {
          "*": "&.[]"
        }
      }
    }
  }
]