在wso2 esb中如何将text / html转换为application / json

时间:2018-06-01 12:03:29

标签: wso2 wso2esb

在wso2 esb响应中我得到的是

{"success":true,"data":"1234"}

使用标题文本/ html,所以我尝试使用

进行转换
<property name="messageType" scope="axis2" type="STRING" value="application/json"/>
<property name="ContentType" scope="axis2" type="STRING" value="application/json"/>

但我是二进制形式的数据。

    {
    "binary": "eyJzdWNjZXNzIjp0cnVlLCJkYXRhIjoie1wicmF0ZV9oclwiOjIwLFwicmV2ZW51ZVwiOjEwMCxcIm5leHRfZGF5X3ByZWRpY3RlZFwiOjEwMH0ifQ=="
}

那么如何获取json数据

1 个答案:

答案 0 :(得分:1)

因为text / html的wso2 ESB消息构建器在处理时将文本转换为二进制格式。

我这样解决了这个问题。

步骤1 - &gt;获取有效负载。 脚本调解员:

<script language="js"><![CDATA[var temp = mc.getPayloadXML();

 mc.setProperty("RESPONSE", temp);]]></script>

步骤2 - &gt;将二进制转换为字符串。 物业调解员:

<property expression="base64Decode(get-property('RESPONSE'))"
        name="DecodeBody" scope="default" type="STRING" xmlns:ns="http://org.apache.synapse/xsd"/>

第3步 - &gt;字符串到JSON 脚本调解员:

<script language="groovy"><![CDATA[
import groovy.json.*;
String s=mc.getProperty("DecodeBody");

def processed = new JsonSlurper().parseText(s.toString());
mc.setPayloadJSON(JsonOutput.toJson(processed));
]]></script>