我需要解析包含產品數組(P1,P2,P3等)的JSON響應。每個產品都包含多個信息,如名稱,類型,成本等。在WSO2 ESB中使用ForEach組件解析JSON響應數組
我需要逐一讀取每個產品,並將從另一個服務獲取的附加數據附加到新的JSON輸出中。我正在考慮使用WSO2 ESB的ForEach組件逐個迭代每個產品。
問題是ForEach組件使用期望配置中使用XML表達式的ForEachExpression。
請建議在WSO2 ESB中逐個解析JSON響應數組的方法。
/阿布舍克
我需要解析包含產品數組(P1,P2,P3等)的JSON響應。每個產品都包含多個信息,如名稱,類型,成本等。在WSO2 ESB中使用ForEach組件解析JSON響應數組
我需要逐一讀取每個產品,並將從另一個服務獲取的附加數據附加到新的JSON輸出中。我正在考慮使用WSO2 ESB的ForEach組件逐個迭代每個產品。
問題是ForEach組件使用期望配置中使用XML表達式的ForEachExpression。
請建議在WSO2 ESB中逐個解析JSON響應數組的方法。
/阿布舍克
可以同時使用迭代或調解員的ForEach迭代爲JSON數組,因爲兩者都是內容感知介質和支持JSON。
要使用哪一個取決於具體的用例,因爲迭代提供了在序列中使用呼叫/呼出/發送中介的功能,而ForEach不允許。
對於下面給出的示例JSON請求,以下迭代可以工作,並且JSON數組和對象可以像這樣被引用。
{
"products":[
{
"product":{
"id":"1234",
"size":"20",
"quantity":"1",
"price":"990",
"type":"Electronics",
"store":{
"id":"001"
}
}
}
]
}
<iterate expression="//products" id="PRD_ITR">
<target>
<sequence>
<sequence key="Product_Enrich_Sequence_s"/>
<!-- For example, Switching sequence based on the product type -->
<switch source="//products/product/type">
<case regex="Computer">
<sequence key="Computer_Product_Enrich_Sequence_s"/>
</case>
<case regex="Mobile">
<sequence key="Mobile_Product_Enrich_Sequence_s"/>
</case>
<case regex="Grocery">
<sequence key="GR_Product_Enrich_Sequence_s"/>
</case>
<default>
<!-- default stuff --!>
</default>
</switch>
</sequence>
</target>
</iterate>
FYR
https://docs.wso2.com/display/ESB490/Iterate+Mediator
https://docs.wso2.com/display/ESB490/ForEach+Mediator
注:WSO2 ESB測試4.9.0
我需要一個獲取每一個產品的價值,然後把它回到單個JSON響應中。 WSO2 ESB是否內部將所有類型的消息類型(如JSON等)轉換爲XML以供進一步處理? – AbhishekM
是的..它的作品就是這樣。將json轉換爲xml以進行內部處理。您可以將最終響應指定爲JSON或通過XSLT或payloadfactory處理它。上述答案是否有效? –
你不覺得它可以嚴重影響從JSON內部轉換爲超過8000行的JSON文件到XML的性能嗎?同時,我注意到從JSON到XML的內部轉換在某種意義上給出錯誤的結果,正確的XML結構沒有得到生成。我們在這裏有任何限制嗎? – AbhishekM