Mule Dataweave 2-数组对象的JSON字符串列表

时间:2019-05-19 13:54:44

标签: mule transformation dataweave arrayobject

我从外部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 个答案:

答案 0 :(得分:5)

您好,您的输入有效载荷是json行类型。有一种简单的方法可以支持这一点。

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

这将按行划分您的输入并读取每一行。

答案 1 :(得分:0)

您可以使用dataweave中的查找功能将每行转换为JSON。将JSONstring作为输入传递给查找函数并返回Json对象。以下代码应该可以正常工作

主要dataweave以文本/纯文本作为输入,但将其视为没有任何标题的单列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>  

希望这会有所帮助。