【问题标题】:WSO2 EI JSONBuilder configurationWSO2 EI JSONBuilder 配置
【发布时间】:2018-12-27 09:59:44
【问题描述】:

我有这个需要处理并转换为 JSON 的 xml:

<jsonObject>
    <number>1234</number>
    <emptyString/>
    <string>hello</string>
</jsonObject>

当它像这样通过 JsonStreamBuilder 运行时:

<property name="messageType" scope="axis2" type="STRING" value="application/json"/>

我得到这样的 JSON:

{
  "number":1234,
  "emptyString": null,
  "string":"hello"
}

所以我想知道有没有什么方法可以配置 JsonStreamBuilder 将空标签视为空标签而不是空字符串,此外我希望数字也被视为字符串。

也许我可以修改默认 XML 以满足我的需要?

顺便说一句,我使用的是 WSO2 EI 6.1.1

【问题讨论】:

    标签: json xml wso2 wso2ei


    【解决方案1】:

    JsonFormatter 的默认行为是允许 JSON 输出中的原始类型。这意味着任何有效数字的内容都将在 JSON 消息中表示为数字。

    作为此问题的解决方案,您可以在将以下属性添加到 EI_HOME/conf 目录的 synapse.properties 文件后禁用转换为原始类型。

    synapse.commons.json.output.autoPrimitive=false 
    

    但是,此属性是一个全局属性,因此它将影响所有服务(代理服务和 API)。所以这意味着任何有效数字的字符串都不会被转换为数字。

    根据您的问题,您需要禁用字符串到整数的转换。你可以解决这个问题,将以下属性添加到 EI_HOME/conf/synapse.properties 文件中。

    synapse.commons.json.output.autoPrimitive=true
    
    synapse.commons.json.output.disableAutoPrimitive.regex=^[1-9]*$
    

    在这种情况下,自动图元仅对数字禁用。

    注意:启用自动图元后,可以根据 synapse.properties 文件中定义的正则表达式从自动图元功能中排除某些字段。

    • 而空标签作为not null的问题,可以参考上述博文解决。

    【讨论】:

    • 很好的解释,但是 OP 如何从自动原语功能中排除空字符串?因为这似乎是他所需要的
    • 您可以关注medium.com/@lashan/…博客来解决这个问题
    • 亲爱的 Dil,SO 的目的是让答案记录在这里。链接作为支持很好,但解决方案应该在这里
    • 感谢您的回答,但该链接解释了我需要实现 json null 到 xml 空标记的相反内容,而我需要将 xml 空标记转换为 json 中的空字符串。并且该任务具有更高的优先级。不过感谢您的回答。
    【解决方案2】:

    这看起来像是 wso itlsef 中的限制,文档说明这是所需的行为。 要克服问题,请尝试脚本调解器 WSO2ESB: Property setting not accepting empty value 或变得更低(更复杂) https://medium.com/@lashan/class-mediator-to-handle-null-values-in-json-payload-wso2-ei-34a43246f0f

    【讨论】:

      【解决方案3】:

      如果您使用的是更新的 WSO 版本,有一个解决方案:https://docs.wso2.com/display/EI630/Working+with+Message+Payloads#WorkingwithMessagePayloads-EmptyXMLelementswiththe'nil'attribute

      您可以在 JSON Transform mediator 的帮助下在本地设置突触配置

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多