如何在Mule中将JSON有效负载值设置为POJO

时间:2014-11-28 06:17:16

标签: json mule

我有以下JSON有效负载

[
    {
        "name": "Car Sale",
        "id": 1,
        "status": "processing"
    },
    {
        "name": "Car Sale",
        "id": 2,
        "status": "processing"
    }
]

如何将有效负载值设置为Java组件

public class ClientDetailRequest {
    private String name;
    private Long id;
    private String status;
}

我想将POJO用作Web服务并通过soap发送pojo

2 个答案:

答案 0 :(得分:1)

  1. 定义入站端点
  2. <http:http:inbound-endpoint exchange-pattern="request-response" host="xxx.xxx.xxx.xxx" port="8080" path="path/to/service" doc:name="HTTP" contentType="application/json"/>

    1. 从muleContext获取有效负载然后 一个。使用mule的内置对象到json变换器将JSON转换为POJO
    2. <json:json-to-object-transformer returnClass="xxxx.xxxx.ClientDetailRequest"/>

      湾或者用户自定义变换器(仅当上述选项不起作用时)


      哦,只是意识到你想处理对象上的数组。在这种情况下,您应该获取json并将其转换为Map。 <json:json-to-object-transformer returnClass="java.util.HashMap" />

      然后使用MEL(如标准MVEL或Java语法)进行查询 <logger message="#[payload.ClientDetailRequest[0]]" level="INFO" />

      现在有各种方法来处理这个问题 - 请查看MVL表达式或groovy或使用纯Java代码..

答案 1 :(得分:0)

要将json转换为可以使用的java对象:

<flow name="stack" doc:name="stack">
<http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8082" path="jsonArray" doc:name="HTTP"/>
<logger level="INFO" doc:name="Logger" message="in flow."/>
<json:json-to-object-transformer doc:name="JSON to Object" returnClass="mule.example.ClientDetailRequest[]"/>
<collection-splitter doc:name="Collection Splitter"/>
<logger message="payload is #[payload]" level="INFO" doc:name="Logger"/>
</flow>

我希望能提供帮助;