Apache nifi 访问Nifi FreeFormTextRecordSetWriter中的数组值

Apache nifi 访问Nifi FreeFormTextRecordSetWriter中的数组值,apache-nifi,Apache Nifi,我正在尝试使用FreeFormTextRecordSetWriter访问Json中的数组值 输入数据: {“数据”:[[“15808600000”,“67.2”],“项目ID”:5917,“标签”:“xxx”,“类型”:“堆叠元素”} 期望输出 {“data1”:“15808600000”,“data2”:“67.2”,“itemid”:5917,“label”:“xxx”,“type”:“stacked_element”} 使用Nifi表达式语言可以做到这一点吗?我认为FreeFormText

我正在尝试使用FreeFormTextRecordSetWriter访问Json中的数组值

输入数据:

{“数据”:[[“15808600000”,“67.2”],“项目ID”:5917,“标签”:“xxx”,“类型”:“堆叠元素”}

期望输出

{“data1”:“15808600000”,“data2”:“67.2”,“itemid”:5917,“label”:“xxx”,“type”:“stacked_element”}


使用Nifi表达式语言可以做到这一点吗?

我认为FreeFormTextRecordSetWriter当前不允许访问嵌套字段,请随意添加此功能,或者使用FreeFormTextRecordPathWriter来启用记录路径表达式

我假设如果您正在尝试FreeFormTextRecordSetWriter,那么您知道
数据
数组中总会有两个条目。如果是这种情况,由于输入/输出是有效的JSON,因此如果流文件中有一个对象,则可以使用JoltTransferMJSON和以下规范:

[
  {
    "operation": "shift",
    "spec": {
      "data": {
        "*": {
          "0": "data1",
          "1": "data2"
        }
      },
      "*": "&"
    }
  }
]
如果文件中有多个JSON对象,则可以将JoltTransferMRecord与JSontereReader和JsonRecordSetWriter以及上述规范一起使用

如果不知道数组中有多少个元素,仍然可以使用以下规范将它们拆分,但请注意,第一个元素的索引为0而不是1(因此
data0
而不是
data1
):

UpdateRecord是另一个选项,但我相信您仍然需要知道数组中有多少个元素

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