Mule Dataweave 2 - список строк JSON для объекта Array - PullRequest
1 голос
/ 19 мая 2019

Я получаю из внешнего API text/plain тело со следующим содержимым. Вывод имеет тот же формат, JSON на строку.

{"update":"7.6"}
{"update":"3.2"}
{"update":"1.3"}

Ожидаемый результат (Object Array):

[{"version":"7.6"},{"version":"3.2"},{"version":"1.3"}]

Как можно зациклить каждую строковую строку и преобразовать в массив объектов?

Предполагая, что мне нужно сначала преобразовать каждую строку в JSON.

Ответы [ 2 ]

5 голосов
/ 20 мая 2019

Привет, ваша входная полезная нагрузка имеет вид строк json.Есть простой способ поддержать это.

%dw 2.0
output application/json
---
payload splitBy  "\n" map ((jsonValue, index) -> read(jsonValue, "application/json"))

Это разделит ваш ввод по строкам и прочитает каждую строку.

0 голосов
/ 20 мая 2019

Вы можете использовать функцию поиска из dataweave для преобразования каждой строки в JSON.Передайте JSONstring в качестве входных данных для функции поиска и верните объект Json.Следующий код должен работать нормально

Основное переплетение данных, которое принимает текст / текст в качестве входных данных, но рассматривает его как CSV с одним столбцом без заголовка.

<dw:transform-message doc:name="Transform Message">
    <dw:input-payload mimeType="application/csv">
        <dw:reader-property name="header" value="false"/>
        <dw:reader-property name="separator" value="|"/>
    </dw:input-payload>
    <dw:set-payload><![CDATA[%dw 1.0
%output application/json
---
payload map lookup('getJsonData',$.column_0)]]>
    </dw:set-payload>
</dw:transform-message>

Выше сценария вызывает следующую функцию поиска, которая принимает ввод какСтрока JSON и вывод в виде объекта JSSON.

    <flow name="getJsonData">
        <dw:transform-message doc:name="Transform Message">
            <dw:input-payload mimeType="application/json"/>
            <dw:set-payload><![CDATA[%dw 1.0
%output application/json
---
payload]]></dw:set-payload>
        </dw:transform-message>
    </flow>  

Надеюсь, это поможет.

...