【问题标题】:wso2 esb - problems with XML to JSON conversionwso2 esb - XML 到 JSON 转换的问题
【发布时间】:2014-10-22 05:23:54
【问题描述】:

我正在使用 WSO2 ESB 4.8.0,在将 xml(从 xslt 输出)转换为 json 时遇到以下问题:

  • 带有数字的字符串会自动转换为整数元素:“orderId”:10000(我希望它是字符串“orderId”:“10000”)

  • 如果存在一个元素,则 xml 列表作为 json 对象出现,如果存在多个元素,则作为 json 数组出现。我如何告诉转换器“这个特定项目必须始终是一个数组”?

我正在使用 xslt 来构建 xml(因为我有各种 xml 可以从一些外部系统调用中合并),然后使用属性 messageType application/json。

我不能使用payloadFactory,因为我有一些逻辑可以实现和使用带有javascript指令的脚本中介,这对我来说是最糟糕的解决方案。

提前致谢。

【问题讨论】:

    标签: wso2 wso2esb


    【解决方案1】:

    要完成此操作,您可以更改 JSON 消息格式化程序。 转到 [ESB 主页]/repository/conf/axis2/axis2.xml。

    更改 JSON 消息格式化程序 而不是 JsonStreamFormatter 使用 org.apache.axis2.json.JSONMessageFormatter

    
    messageFormatter contentType="application/json"="org.apache.axis2.json.JSONStreamFormatter"/>
    

    注意。这里所有的值都是字符串。

    【讨论】:

      【解决方案2】:

      首先,请注意桌面上有几个转换选项用于在 XML 和 JSON 之间进行映射。我建议使用另一个 xslt,映射以前在您的 xml 和 json 之间发送,然后发送 json。也许,甚至您可以将所有这些逻辑放入一个序列中,并从您需要的所有点调用该序列。

      有关 xslt 的示例,请参阅http://www.bramstein.com/projects/xsltjson/

      HTH。

      【讨论】:

      • 感谢您的回复。但我不确定 wso2 是否支持 XSLTJSON。它确实忽略了像 json:force-array="true" 这样的函数。我只使用标准 xslt 来创建 xml 结构。然后我使用此属性<property name="messageType" scope="axis2" value="application/json"/> 将 xml 转换为 json。所以我看不出有任何方法可以强制将 int 转换为字符串或将对象转换为数组。
      • 我并不是说您“按原样”使用 xslt,但它可以帮助您了解如何实现您的自定义。您建议的选项是“自动”xml/json 转换。我不知道是否有任何属性可以满足您的需求,但您可以浏览代码以了解是否有可能。这就是开源的伟大之处!
      • 谢谢..我发现 staxon(用于从 wso2 xml 到 json 转换器)支持例如标签 。在 xml 元素之前使用该标记告诉转换后将该元素视为数组。现在我找不到的是如何将字符串标记为不转换为整数。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多