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

Mule Dataweave 2 - List of JSON Strings to Array Object

我从外部 API 得到一个 text/plain body 具有以下内容。 输出格式相同,每行 JSON。

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

预期输出(Object Array):

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

如何循环每个字符串行并转换为对象数组?

假设我必须先将每一行转换为 JSON。

您可以使用 dataweave 中的查找函数将每一行转换为 JSON。将 JSON 字符串作为输入传递给查找函数和 return Json object。以下代码应该可以正常工作

主数据编织将 text/plain 作为输入,但将其视为没有任何 header.

的单列 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 object.

    <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>  

希望对您有所帮助。

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

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

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