如何在Mule ESB中将json转换为json文档
我有一个接收json文档的HTTP端点流。这应该转换成其他json文档:“json到json的转换。在mule ESB中,不使用XSLT进行转换的最佳实践是什么 他们可以分享一些例子如何在Mule ESB中将json转换为json文档,mule,mule-studio,Mule,Mule Studio,我有一个接收json文档的HTTP端点流。这应该转换成其他json文档:“json到json的转换。在mule ESB中,不使用XSLT进行转换的最佳实践是什么 他们可以分享一些例子 感谢您的支持。如果您使用的是Mule的企业版,答案很简单。使用DataMapper。这正是DataMapper的设计目的,转换数据。如果您使用的是community edition,那么答案实际上取决于您需要转换多少数据。我将从转换json开始转换为java.util.Map。这使其易于使用。一旦将其作为映射,则可
感谢您的支持。如果您使用的是Mule的企业版,答案很简单。使用DataMapper。这正是DataMapper的设计目的,转换数据。如果您使用的是community edition,那么答案实际上取决于您需要转换多少数据。我将从转换json开始转换为java.util.Map。这使其易于使用。一旦将其作为映射,则可以使用MEL表达式或编写自定义java transformer将数据更改为所需的任何格式(仍使用映射)。然后将生成的映射转换回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>
除了作为企业功能的数据映射器之外,您还可以使用表达式转换器组件来创建JSON负载 因此,当您在HTTP之后收到JSON有效负载时,您可以使用JSON到对象转换器(返回类型取决于您的JSON)解析JSON,将元素的值存储在变量中,最后使用表达式转换器来创建动态JSON
让我们考虑一个非常简单的例子,让你的JSON为
{
"name": "Julio Cejas",
"id": 37
}
现在,您想将转换为以下JSON,添加一个额外的元素
{
"name": "Julio Cejas",
"id": 37,
"designation": "Director"
}
因此,您可以在以下流程中使用表达式转换器从一个JSON动态转换为另一个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表达式转换器非常简单,但千万不要忘记通过对象将其结果转换为JSON转换器,以获得可用的JSON。