WSO2 ESB 4.8 json原生支持 - 试图通过Script mediator操纵json和使用mediator进行日志记录

时间:2014-01-28 13:19:06

标签: json wso2 wso2esb

从WSO2 ESB 4.8 - 本机支持json,可以在WSO2网站中找到信息。参考下面的博客w.r.t.json formatter&助洗剂

http://charithaka.blogspot.co.uk/2013/10/the-difference-between-json-streaming.html

我的用例是在HTTP / 1.1 REST上使用JSON格式,这里要注意的要点是:

  • 不转换ESB中的json数据(将json格式保留在ESB中)
  • 使用json格式的mediator操作json(本机支持json的mediator - 脚本/自定义调解器)

尝试使用:

org.apache.axis2.json.JSONStreamBuilder
org.apache.axis2.json.JSONStreamFormatter
如Charitha博客中所述。现在,我没有看到json在soap消息中被转换为soap(使用Log Mediator)。

这是否意味着,WSO2 ESB 4.8不会将json请求转换为soap,以避免某些数据格式的数据丢失(例如,数组等,如https://github.com/erny/jsonbuilderformatter中所述)

任何人都可以使用org.apache.axis2.json.JSONStreamBuilder&和我分享一个记录/操作json消息的示例。 org.apache.axis2.json.JSONStreamFormatter(或)json的任何其他构建器和格式化程序,而不在消息上下文中转换为soap消息。

1 个答案:

答案 0 :(得分:1)

正如http://docs.wso2.org/display/ESB480/JSON+Support doc中所提到的,从ESB 4.8开始,您必须使用以下构建器和格式化程序来保持JSON表示不变,而不必转换为XML。这两个是ESB 4.8中的默认选项

org.apache.synapse.commons.json.JsonStreamBuilder    
org.apache.synapse.commons.json.JsonStreamFormatter

以JSON使用身份登录,

<log>
    <property name="JSON-Payload" expression="json-eval($.)"/>
</log>

您可以使用Payload FactoryScript调解员操纵JSON正文。例如.-

<payloadFactory media-type="json">
        <format>
                {
                    "location_response" : {
                        "name" : "$1",
                        "tags" : $2
                    }
                }
        </format>
    <args>
        <arg evaluator="json" expression="$.name"/>
        <arg evaluator="json" expression="$.types"/>
    </args>
</payloadFactory>

有关详细信息,请参阅documentation