Я мог бы преобразовать всю полезную нагрузку JSON, выполнив следующие шаги в ESB 4.5.0. Эти шаги включают изменение построителя сообщений и средства форматирования сообщений для типа содержимого application/json.
Изменить построитель сообщений, форматтер для JSON; В файле CARBON_HOME/repository/conf/axis2/axis2.xml отключите конструктор сообщений по умолчанию и средство форматирования сообщений, закомментировав следующие строки:
<messageBuilder contentType="application/json" class="org.apache.axis2.json.JSONBuilder"/>
<messageFormatter contentType="application/json" class="org.apache.axis2.json.JSONMessageFormatter"/>
Задействуйте JSONStreamBuilder и JSONStreamFormatter, раскомментировав следующие строки:
<messageFormatter contentType="application/json" class="org.apache.axis2.json.JSONStreamFormatter"/>
<messageBuilder contentType="application/json" class="org.apache.axis2.json.JSONStreamBuilder"/>
Напишите функцию Javascript для преобразования и создания новой полезной нагрузки XML.
function transformRequest(mc) {
var array = mc.getPayloadJSON();
var payload = <games/>;
for (i = 0; i < array.length; ++i) {
var elem = array[i];
payload.game += <game>
<position>{elem.position}</position>
<team_id>{elem.team_id}</team_id>
<team>{elem.team}</team>
<played>{elem.played}</played>
<won>{elem.won}</won>
<drawn>{elem.drawn}</drawn>
<lost>{elem.lost}</lost>
<for>{elem["for"]}</for>
<against>{elem.against}</against>
<difference>{elem.difference}</difference>
<points>{elem.points}</points>
<info>{elem.info}</info>
</game>
}
mc.setPayloadXML(payload);
}
Измените outSequence, чтобы выполнить преобразование входящих полезных данных JSON.
<outSequence>
<script language="js" key="conf:/repository/esb/scripts/transformrequest.js" function="transformRequest"/>
<property name="messageType" value="text/xml" scope="axis2"/>
<send/>
</outSequence>
person
udeshike
schedule
09.01.2013