【问题标题】:StAXON - Force specific value to be String when autoPrimitive is trueStAXON - 当 autoPrimitive 为真时,强制特定值为字符串
【发布时间】:2016-09-29 22:46:26
【问题描述】:

使用 StAXON 将 XML 负载转换为 JSON 时,是否可以标记特定节点,以便在转换时它们不遵守 autoPrimitive(true) 属性?

我有一些 XML:

<root>
    <foo>1234</foo> <!-- foo should always be String -->
    <bar>5678</bar> <!-- bar should always be Integer -->
</root>

并且我希望将其转换为以下 JSON:

{
    "foo": "1234", // Note: this value is a String
    "bar": 5678 // autoPrimitive setting has caused a type conversion
}

我知道在处理数组时我可以使用 XML 处理指令&lt;? xml-multiple myNode ?&gt;,那么我可以使用类似的东西来确保 XML 中的某些节点不会自动转换为它们各自的原始类型吗?我遇到的问题是foobar 由于它们的值而被转换为数字。

作为参考,我尝试使用 WSO2 的 ESB 4.9.0,它在处理 XML -> JSON 和 JSON -> XML 转换时使用 StAXON 库。

【问题讨论】:

    标签: java json xml wso2 stax


    【解决方案1】:

    如果应该以这种方式转换,则无法标记每个节点。您可以通过以下设置全局禁用 autoPrimitives,

    打开 ESB_HOME/repository/conf/synapse.properties,进行设置

    synapse.commons.json.json.output.autoPrimitive=false
    

    【讨论】:

    • 好的,谢谢。如果我更改此设置,当我有一个希望在 JSON 中始终为数字的值时会发生什么?例如,我的字段是 ID,因此必须始终表示为数字。
    • 这是不可能的 AFAIK。如果设置此项,数字将始终转换为字符串。
    猜你喜欢
    • 2014-10-09
    • 1970-01-01
    • 2013-12-23
    • 2014-01-07
    • 2014-08-10
    • 1970-01-01
    • 1970-01-01
    • 2018-10-07
    • 1970-01-01
    相关资源
    最近更新 更多