如何在Mule ESB中将json-to-json文档转换 [英] How to transform json-to-json document in Mule ESB

查看:337
本文介绍了如何在Mule ESB中将json-to-json文档转换的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个带有HTTP端点的流,该流接收json文档.应该将其转换为其他json文档:从json到json的转换.在m子ESB中,这是不使用XSLT的最佳做法?

I have a flow with an HTTP endpoint that receives a json document. This should transformed into other json document: "json-to-json transformation. In mule ESB which is the best practice to do this without using an XSLT?

他们可以分享一些例子.

They could sharing some example.

感谢您的支持.

推荐答案

除了作为企业功能的 Datamapper 之外,您可以使用 Expression Translator 组件创建JSON有效载荷.

Other than Datamapper which is a Enterprise feature, you can use Expression transformer component to create your JSON payload.

因此,当您在HTTP之后收到JSON有效负载时,可以使用json-to-object-transformer解析JSON(返回类型取决于JSON),将元素的值存储在变量中,最后使用表达式转换器以创建动态JSON.

So, when you receive the JSON payload after your HTTP, you parse the JSON using json-to-object-transformer (return type depends on your JSON), store the value of elements in variable, and finally use Expression transformer to create your dynamic JSON..

让我们考虑一个非常简单的示例,让您的JSON成为

Let's consider a very simple example, let your JSON be

{
    "name": "Julio Cejas",
    "id": 37
}

现在,您要转换为以下JSON,添加一个额外的元素,

Now,you want to transform into following JSON adding an extra element,

{
    "name": "Julio Cejas",
    "id": 37,
    "designation": "Director"
}

因此,您可以在以下流程中使用表达式转换器从一种JSON动态转换为另一种JSON:-

So, you can transform from one JSON to another dynamically using Expression transformer in the following flow :-

<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

You can modify this flow as per your requirement, and you can generate the JSON you require in any format in very easy way

这篇关于如何在Mule ESB中将json-to-json文档转换的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆