我正在使用WSO2 ESB 4.8.0,我在将xml(从xslt输出)转换为json时遇到以下问题:
带有数字的字符串会自动转换为整数元素:“orderId”:10000(我希望它是字符串“orderId”:“10000”)
如果有一个元素,则xml列表为json对象,如果存在多个元素,则为json数组。如何告诉转换器“此特定项必须始终为数组”?
我正在使用xslt来构建xml(因为我有从一些外部系统调用中合并的variuos xml),然后使用属性messageType application / json。
我无法使用payloadFactory,因为我有一些逻辑来实现并使用脚本调解器和javascript指令semms给我,就像一个最糟糕的解决方案。
提前致谢。
答案 0 :(得分:2)
要完成此操作,您可以更改JSON消息格式化程序。 转到[ESB主页] /repository/conf/axis2/axis2.xml。
更改JSON消息格式化程序 而不是JsonStreamFormatter使用org.apache.axis2.json.JSONMessageFormatter
<!--messageFormatter contentType="application/json" class="org.apache.synapse.commons.json.JsonStreamFormatter"/--> <messageFormatter contentType="application/json" class="org.apache.axis2.json.JSONStreamFormatter"/>
请注意。这里所有的值都是字符串。
答案 1 :(得分:0)
首先,请注意桌面上有几个转换选项可以在XML和JSON之间进行映射。我建议使用另一个xslt,映射之前要在xml和json之间发送,然后发送json。也许,即使您可以将所有这些逻辑放入一个序列中,并从您需要的所有点调用该序列。
有关xslt的示例,请参阅http://www.bramstein.com/projects/xsltjson/。
HTH。