2016-05-31 5 views
1

Wenn Sie StAXON zum Konvertieren einer XML-Nutzlast in JSON verwenden, ist es möglich, bestimmte Knoten so zu kennzeichnen, dass sie sich bei der Konvertierung nicht an die autoPrimitive(true)-Eigenschaft halten?StAXON - Zwingt spezifischen Wert zu String, wenn autoPrimitive true ist

Ich habe einige XML:

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

Und ich will es in die folgenden JSON konvertiert werden:

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

Ich bin mir bewusst, dass ich die XML-Verarbeitungsanweisung verwenden kann <? xml-multiple myNode ?> beim Umgang mit Arrays, also gibt es etwas Ähnliches, das ich verwenden kann, um sicherzustellen, dass bestimmte XML-Knoten nicht automatisch in ihre jeweiligen primitiven Typen konvertiert werden? Das Problem, das ich habe, ist, dass sowohl foo als auch bar aufgrund ihrer Werte in Zahlen umgewandelt werden.

Als Referenz verwende ich WSO2's ESB 4.9.0, welches die StAXON-Bibliothek benutzt, wenn es um XML -> JSON und JSON -> XML-Konvertierung geht.

Antwort

2

Es ist nicht möglich, jeden Knoten zu kennzeichnen, wenn er auf diese Weise konvertiert werden soll. Sie können, indem Sie folgende autoPrimitives global deaktivieren,

öffnen ESB_HOME/repository/conf/synapse.properties und setzen

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

OK, danke. Wenn ich diese Einstellung ändere, was passiert, wenn ich einen Wert habe, der in JSON immer numerisch sein soll? Zum Beispiel habe ich Felder, die IDs sind, also immer als numerisch dargestellt werden müssen. –

+0

Das ist nicht möglich AFAIK. Wenn Sie dies einstellen, werden Zahlen immer als Strings konvertiert. –

Verwandte Themen