2016-05-31 67 views
1

使用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中的某些节点不会自动转换为它们各自的基本类型?我遇到的问题是foobar由于它们的值而被转换为数字。

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

回答

2

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

打开ESB_HOME /库/ conf目录/ synapse.properties,并设置

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

好的,谢谢。如果我改变了这个设置,当我有一个我希望在JSON中始终为数字的值时会发生什么?例如,我有字段是ID,所以必须始终用数字表示。 –

+0

这是不可能的AFAIK。如果你设置这个,数字将总是被转换为字符串。 –