WSO2 ESB 4.8 json native support - trying to manipulate json and log using mediator via Script mediator

荒凉一梦 提交于 2019-12-13 18:44:47

问题


From WSO2 ESB 4.8 - json is supported natively, information can be found in WSO2 websit. Referring below blog w.r.t.json formatter & builder

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

My use-case is to use JSON format over HTTP/1.1 REST, main point to note here is:

  • not to tranform the json data within ESB (keep the json format natively within ESB)
  • manipulate the json using mediator in json format (mediator which support json natively - script/custom mediators)

trying to use :

org.apache.axis2.json.JSONStreamBuilder
org.apache.axis2.json.JSONStreamFormatter

as mentioned in Charitha blog. Now, I am not seeing json being converted to soap in the soap message (using Log Mediator).

does that mean, WSO2 ESB 4.8 does not convert a json request to soap under the hood avoiding data loss for some data format (e.g., Array, etc., as mentioned in https://github.com/erny/jsonbuilderformatter)

Can anyone share me an example of logging / manipulating json message using org.apache.axis2.json.JSONStreamBuilder & org.apache.axis2.json.JSONStreamFormatter (or) any other builder and formatter for json without converting into soap message in the message context.


回答1:


As mentioned in http://docs.wso2.org/display/ESB480/JSON+Support doc, from ESB 4.8 onwards you have to use following builder and formatter to keep the JSON representation intact without converting to XML. These two are the default option in ESB 4.8

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

To log as JSON use,

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

You can manipulate the JSON body using Payload Factory or Script mediators. For e.g.-

<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>

Refer the documentation for more details.



来源:https://stackoverflow.com/questions/21406649/wso2-esb-4-8-json-native-support-trying-to-manipulate-json-and-log-using-media

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!