Die SerializeXmlNode
-Funktion aus der Newtonsoft.Json.JsonConvert
-Klasse gibt immer den Wert der letzten untergeordneten Knoten eines XML als Zeichenkettentyp im Serialisierungsprozess aus, wenn Sie sie manchmal als Integer oder Boolean serialisieren müssen.
Beispielcode:
%Vor%Ausgabe:
%Vor%Gewünschte Ausgabe:
%Vor%Gibt es eine Möglichkeit, zu erzwingen, dass ein XML-Knoten als Integer oder Boolean serialisiert wird?
Danke.
Hinweis: Bitte vermeiden Sie, Workarounds zu veröffentlichen, wenn der XML-Code bereits in eine JSON-Zeichenfolge serialisiert ist, da diese Problemumgehungen diejenigen sind, die wir vermeiden möchten.
Der aktuelle JSON.NET-Build stellt das angeforderte Feature nicht zur Verfügung, daher habe ich den Quellcode so geändert, dass er diese Funktionalität bietet:
Diese Änderung bietet dem XmlNodeConverter eine Möglichkeit, ein optionales Attribut aus XML-Knoten mit dem Namen "Type" zu lesen, das die gewünschte Serialisierung eines Knotenwerts enthält. Standardmäßig serialisiert der Konverter alle Werte als Zeichenfolge in der Ergebnis-JSON-Zeichenfolge. Jetzt können Sie jedoch ein Attribut hinzufügen, das die gewünschte Ausgabe von DataType angibt. Die zulässigen Typen sind Integer, Float, Boolean und Date.
Wenn Sie beispielsweise diese XML-Quelle haben:
%Vor%Es wird wie folgt serialisiert:
%Vor%JSON.NET ist kein Tool für die XML-Serialisierung. Die Serialisierung von XML-Knoten soll eine Eins-zu-eins-Entsprechung zwischen XML und JSON bereitstellen. Da Attribute in XML nur vom Typ string sein können, werden Typinformationen während der Serialisierung nicht beibehalten. Es wird nutzlos sein, wenn Sie in JSON deserialisieren.
Wenn Sie XML in JSON konvertieren müssen, empfehle ich die Verwendung einer DTO-Klasse, die sowohl die XML- als auch die JSON-Serialisierung unterstützt.
%Vor%Deserialisieren von XML und Serialisierung zu JSON:
%Vor%Ausgabe:
%Vor%