繁体   English   中英

WSO2 EI JSONBuilder 配置

[英]WSO2 EI JSONBuilder configuration

我有这个需要处理并转换为 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 将空标记不视为 null,而是视为空字符串,此外我希望数字也被视为字符串。

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

顺便说一句,我正在使用 WSO2 EI 6.1.1

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

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

synapse.commons.json.output.autoPrimitive=false 

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

根据您的问题,您需要禁用 String 到 Integer 的转换。 您可以解决此问题,同时将以下属性添加到EI_HOME/conf/synapse.properties文件中。

synapse.commons.json.output.autoPrimitive=true

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

在这种情况下,auto primitive 仅对数字禁用。

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

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

这看起来像是 wso itlsef 中的限制,文档指出这是所需的行为。 要克服问题,请尝试脚本中介WSO2ESB:属性设置不接受空值或变得更低(更复杂) https://medium.com/@lashan/class-mediator-to-handle-null-values-in-json-有效负载-wso2-ei-34a43246f0f

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

您可以在JSON 转换中介的帮助下在本地设置突触配置

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM