![](/img/trans.png)
[英]Reading database connection configuration from a registry properties file in WSO2 EI
[英]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 文件中定义的正则表达式将某些字段从自动原语功能中排除。
这看起来像是 wso itlsef 中的限制,文档指出这是所需的行为。 要克服问题,请尝试脚本中介WSO2ESB:属性设置不接受空值或变得更低(更复杂) https://medium.com/@lashan/class-mediator-to-handle-null-values-in-json-有效负载-wso2-ei-34a43246f0f
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.