2017-03-10 89 views
1

想要從我的json有效內容中提取每個對象,如下所示:需要將每個對象從此映射傳遞到splitter或collection splitter。我不能在這裏使用foreach範圍。Mule表達式從Json數組中獲取單個對象

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

回答

0

要從數組中獲得整個對象,我們可以使用簡單的[[有效載荷]],這將像每個作用域一樣小心。

0

如果你想解析和訪問JSON元素,然後 **<json:json-to-object-transformer/>**是做的伎倆。 java.util.HashMap or java.util.List or java.util.Map 取決於您的JSON數據的類型。 也可以使用java.lang.Object

+0

您還可以使用#[JSON:數據/場] –

+0

我會使用建議不'#[json:data/field]'表達式。 JsonPath表達式評估器已被棄用。更多信息。可以在這裏找到:https://docs.mulesoft.com/mule-user-guide/v/3.8/json-module-reference。 –

+0

我仍然收到異常。即使我使用java.util.List或java.lang.Object。 org.mule.api.transformer.TransformerMessagingException:轉換的對象類型爲:「SimpleDataType {type = java.lang.String,mimeType ='*/*',encoding ='null'}」,但預期的返回類型是「SimpleDataType {type = java.util.List,mimeType ='application/json',encoding ='null'}」。 (org.mule.api.transformer.TransformerMessagingException) – user4338724

0

有多種方式來做到這一點: 1)作爲由維傑提到的,使用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"/> 

+0

Getting the下面以異常的形式使用dataweave腳本時提示Root異常堆棧跟蹤: java.lang.IllegalArgumentException:對象「com.mulesoft.weave.reader.ByteArraySeekableStream」的類型不正確。它必須在org.mule.util.collection.EventToMessageSequenceSplittingStrategy上鍵入「{interface java.lang.Iterable,interface java.util.Iterator,interface org.mule.routing.MessageSequence,interface java.util.Collection}」 \t .split(EventToMessageSequenceSplittingStrategy.java:65) – user4338724

+0

什麼是你的輸入類型dataweave?它是json還是其他的東西? – user02041988

相關問題