我有一個接收json文檔的HTTP端點。這應該轉化爲其他JSON文件:「JSON到JSON的轉換在騾子ESB是做到這一點的最佳做法不使用XSLT如何在Mule ESB中轉換json-to-json文檔
他們可以分享一些例子
感謝您的支持。?。
我有一個接收json文檔的HTTP端點。這應該轉化爲其他JSON文件:「JSON到JSON的轉換在騾子ESB是做到這一點的最佳做法不使用XSLT如何在Mule ESB中轉換json-to-json文檔
他們可以分享一些例子
感謝您的支持。?。
除了的DataMapper這是一個企業的功能,你可以使用表達變壓器組件來創建你的JSON有效載荷。
因此,當您在HTTP之後收到JSON負載時,您將使用json-to-object-transformer(返回類型取決於您的JSON)解析JSON,將元素的值存儲在變量中,最後使用表達式變壓器創建動態JSON ..
讓我們考慮一個非常簡單的例子,讓你的JSON是
{
"name": "Julio Cejas",
"id": 37
}
現在,你想轉化成以下JSON添加一個額外的元素,
{
"name": "Julio Cejas",
"id": 37,
"designation": "Director"
}
所以,你可以在下面的流程從一個JSON轉換到另一個動態使用表達變壓器: -
<flow name="DynamicJSONFlow1" doc:name="DynamicJSONFlow1">
<http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8085" path="test" doc:name="HTTP"/>
<json:json-to-object-transformer returnClass="java.lang.Object" doc:name="JSON to Object"/>
<set-variable variableName="name" value="#[message.payload.name]" doc:name="Variable"/>
<set-variable variableName="id" value="#[message.payload.id]" doc:name="Variable"/>
<expression-transformer
expression="#[[
'name':flowVars.name,
'id':flowVars.id,
'designation':'Designation'
]
]" doc:name="Expression"/>
<json:object-to-json-transformer doc:name="Object to JSON"/>
<logger level="INFO" message="#[message.payload]" doc:name="Logger"/>
</flow>
您可以修改此流程按照您的要求,您可以生成JSON你需要在任何格式非常容易的方式
如果您使用的是企業版的Mule,答案很簡單:使用DataMapper,這正是DataMapper設計的目的,是轉換數據,如果您使用的是社區版,那麼答案真的取決於你需要轉換數據的次數,我首先將json轉化爲java.util.Map,這使得它很容易處理,一旦你將它作爲一個Map,你可以使用MEL exp迴應或編寫一個自定義Java轉換器,將數據轉換爲您需要的任何格式(仍然使用Map)。然後將所得到的Map轉換回Json是微不足道的。
<flow name="jsonToJson">
<vm:inbound-endpoint exchange-pattern="request-response" path="jsonToJson" doc:name="VM"/>
<json:json-to-object-transformer returnClass="java.util.Map" doc:name="JSON to Object"/>
<custom-transformer class="com.example.myMapToMapDataTransformer" doc:name="Java"/>
<json:object-to-json-transformer doc:name="Object to JSON"/>
</flow>
謝謝你支持Anirban! – 2015-07-06 02:36:52