Nifi - приписывает json - не может генерировать требуемый json из атрибута - PullRequest
0 голосов
/ 18 мая 2018

Содержимое потокового файла:

{"resourceType": "Patient", "myArray": [1, 2, 3, 4]}

Я используюПроцессор EvaluateJsonPath для загрузки myArray в атрибут myArray.

enter image description here Затем я использую процессор AttributesToJSON для создания json из myArray.enter image description here

Но в содержимом потокового файла я получаю

{"myArray": "[1,2,3,4]"}

Я ожидал, что поток-файл будет иметь следующее содержимое.

{"myArray": [1,2,3,4]}

Вот атрибуты файла потока enter image description here Как я могу снова получить "myArray" в виде массива в содержимом?

1 Ответ

0 голосов
/ 18 мая 2018

Используйте процессоры, ориентированные на записи, такие как Процессор Convert Record вместо использования процессоров EvaluateJsonPath, AttributesToJSON.

RecordReader as JsonPathReader

JsonPathReader Configs: Path reader

AvroSchemaRegistry:

{
    "namespace": "nifi",
    "name": "person",
    "type": "record",
    "fields": [     
        { "name": "myArray", "type": {
            "type": "array",
            "items": "int"
        }}
    ]
}

JsonSetWriter: Используйте ту же службу контроллера AvroSchemaRegistry для доступа к схеме.Чтобы получить доступ к AvroSchema , вам нужно установить атрибут schema.name в файл потока.

Выходной файл потока содержимое будет

[{"myArray":[1,2,3,4]}]

пожалуйста, обратитесь к этой ссылке, чтобы настроить процессор ConvertRecord

(или)

, если ваш заслуженный вывод {"myArray":[1,2,3,4]}без [](array) затем используйте процессор ReplaceText вместо процессора AttributesToJson .

ReplaceText Configs: enter image description here

...