StAXON - 当autoPrimitive为true时,强制将字符串的值设置为字符串
问题描述:
使用StAXON将XML负载转换为JSON时,是否可以标记特定的节点,以便在转换时它们不符合autoPrimitive(true)
属性?StAXON - 当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处理指令<? xml-multiple myNode ?>
与数组一样,有没有类似的东西可以用来确保XML中的某些节点不会自动转换为它们各自的基本类型?我遇到的问题是foo
和bar
由于它们的值而被转换为数字。
作为参考,我正尝试使用WSO2的ESB 4.9.0,它在处理XML - > JSON和JSON - > XML转换时使用StAXON库。
答
如果应该按照这种方式进行转换,则不能标记每个节点。您可以通过全局设置禁用以下autoPrimitives,
打开ESB_HOME /库/ conf目录/ synapse.properties,并设置
synapse.commons.json.json.output.autoPrimitive=false
好的,谢谢。如果我改变了这个设置,当我有一个我希望在JSON中始终为数字的值时会发生什么?例如,我有字段是ID,所以必须始终用数字表示。 –
这是不可能的AFAIK。如果你设置这个,数字将总是被转换为字符串。 –