Mule表达式从Json数组中获取单个对象

Mule表达式从Json数组中获取单个对象,mule,mule-studio,mule-component,mule-el,Mule,Mule Studio,Mule Component,Mule El,要从json负载中提取每个对象,如下所示:需要将此映射中的每个对象传递到拆分器或集合拆分器。我不能在这里使用foreach范围 [ { "Name": null, "Key": "4", "Header": { "Id": "14" } }, { "Name": null, "Key": "5", "Header": { "Id"

要从json负载中提取每个对象,如下所示:需要将此映射中的每个对象传递到拆分器或集合拆分器。我不能在这里使用foreach范围

[
    {
        "Name": null,
        "Key": "4",
        "Header": {
        "Id": "14"
        }
    },
    {
        "Name": null,
        "Key": "5",
        "Header": {
        "Id": "15"
        }
    }
]

要从数组中获取整个对象,我们可以使用simple#[payload],这将像处理每个作用域一样进行处理

要从数组中获取整个对象,我们可以使用简单的#[payload],这与每个作用域一样

如果您想解析和访问JSON元素,那么
***
是实现这一技巧的方法。
java.util.HashMap或java.util.List或java.util.Map
取决于JSON数据的类型。
如果要解析和访问JSON元素,还可以使用java.lang.Object
***
是实现这一技巧的方法。
java.util.HashMap或java.util.List或java.util.Map
取决于JSON数据的类型。 您还可以使用
java.lang.Object
有多种方法可以做到这一点: 1) 正如Vijay所提到的,使用json到对象转换器将输入json映射到任何集合类型,例如

 <json:json-to-object-transformer returnClass="java.util.List" doc:name="JSON to Object"/>
  <collection-splitter doc:name="Collection Splitter"/>

2) 使用dataweave从输入json数据获取集合:

<dw:transform-message doc:name="Transform Message">
            <dw:set-payload><![CDATA[%dw 1.0
%output application/java
---
payload 
]]></dw:set-payload>
        </dw:transform-message>
<collection-splitter doc:name="Collection Splitter"/>

有多种方法可以做到这一点: 1) 正如Vijay所提到的,使用json到对象转换器将输入json映射到任何集合类型,例如

 <json:json-to-object-transformer returnClass="java.util.List" doc:name="JSON to Object"/>
  <collection-splitter doc:name="Collection Splitter"/>

2) 使用dataweave从输入json数据获取集合:

<dw:transform-message doc:name="Transform Message">
            <dw:set-payload><![CDATA[%dw 1.0
%output application/java
---
payload 
]]></dw:set-payload>
        </dw:transform-message>
<collection-splitter doc:name="Collection Splitter"/>


您也可以使用#[json:data/field]我建议不要使用
#[json:data/field]
表达式。不推荐使用JsonPath表达式计算器。更多信息。在这里可以找到:。我仍然收到异常。即使我使用java.util.List或java.lang.Object。org.mule.api.transformer.TransformerMessageException:转换的对象类型为:“SimpleDataType{type=java.lang.String,mimeType='/',encoding='null'}”,但预期的返回类型为“SimpleDataType{type=java.util.List,mimeType='application/json',encoding='null'}”。(org.mule.api.transformer.TransformerMessageException)在收集拆分器之后,必须向json transformer添加对象以消除上述异常。您还可以使用#[json:data/field]我建议不要使用
#[json:data/field]
表达式。不推荐使用JsonPath表达式计算器。更多信息。在这里可以找到:。我仍然收到异常。即使我使用java.util.List或java.lang.Object。org.mule.api.transformer.TransformerMessageException:转换的对象类型为:“SimpleDataType{type=java.lang.String,mimeType='/',encoding='null'}”,但预期的返回类型为“SimpleDataType{type=java.util.List,mimeType='application/json',encoding='null'}”。(org.mule.api.transformer.TransformerMessageException)在收集拆分器之后,必须将对象添加到json transformer以消除上面的异常。当使用dataweave脚本作为建议的根异常堆栈跟踪时,得到下面的异常:java.lang.IllegalArgumentException:object“com.mulesoft.weave.reader.ByteArraySeekableStream”不是正确的类型。它必须是org.mule.util.Collection.EventToMessageSequencesSequencesPlittingStrategy.split(EventToMessageSequenceSplittingStrategy.java:65)上的类型“{interface java.lang.Iterable,interface java.util.Iterator,interface org.mule.routing.MessageSequence,interface java.util.Collection}”?是json还是其他原因?当使用dataweave脚本作为建议的根异常堆栈跟踪时,获取以下异常:java.lang.IllegalArgumentException:Object“com.mulesoft.weave.reader.ByteArraySeekableStream”的类型不正确。它必须是org.mule.util.Collection.EventToMessageSequencesSequencesPlittingStrategy.split(EventToMessageSequenceSplittingStrategy.java:65)上的类型“{interface java.lang.Iterable,interface java.util.Iterator,interface org.mule.routing.MessageSequence,interface java.util.Collection}”?是json还是别的什么?