Ich habe angefangen, Json.NET zu verwenden, um eine Zeichenfolge im JSON-Format in ein Objekt oder umgekehrt zu konvertieren. Ich bin nicht sicher, ob es im Json.NET-Framework möglich ist, eine Zeichenfolge in JSON in das XML-Format und umgekehrt zu konvertieren.
282
Antworten:
Ja. Verwenden der JsonConvert-Klasse, die Hilfsmethoden für diesen genauen Zweck enthält:
Dokumentation hier: Konvertieren zwischen JSON und XML mit Json.NET
quelle
Ja, Sie können es tun (ich tue es), aber beachten Sie beim Konvertieren einige Paradoxe und gehen Sie angemessen damit um. Sie können nicht automatisch alle Schnittstellenmöglichkeiten anpassen, und die Steuerung der Konvertierung wird nur eingeschränkt unterstützt. Viele JSON-Strukturen und -Werte können nicht automatisch in beide Richtungen konvertiert werden. Beachten Sie, dass ich die Standardeinstellungen für die Newtonsoft JSON-Bibliothek und die MS XML-Bibliothek verwende, sodass Ihr Kilometerstand variieren kann:
XML -> JSON
{}
ODER verschachtelten Arrays werden,[ {} {} ...]
je nachdem, ob nur ein oder mehrere untergeordnete XML-Elemente vorhanden sind. Sie würden diese beiden in JavaScript usw. unterschiedlich verwenden. Verschiedene Beispiele für XML, die demselben Schema entsprechen, können auf diese Weise tatsächlich unterschiedliche JSON-Strukturen erzeugen. Sie können Ihrem Element das Attribut json: Array = 'true' hinzufügen , um dies in einigen (aber nicht unbedingt allen) Fällen zu umgehen.Ein neues Update ändert dies (Dank an Jon Story für den Hinweis): https://www.newtonsoft.com/json/help/html/T_Newtonsoft_Json_NullValueHandling.htm
JSON -> XML
Bitte zögern Sie nicht, andere Probleme zu erwähnen, die Sie bemerkt haben. Ich habe meine eigenen Routinen zum Vorbereiten und Reinigen der Zeichenfolgen beim Hin- und Herkonvertieren entwickelt. Ihre Situation kann eine Vorbereitung / Bereinigung erfordern oder nicht. Wie StaxMan erwähnt, erfordert Ihre Situation möglicherweise tatsächlich, dass Sie zwischen Objekten konvertieren. Dies kann geeignete Schnittstellen und eine Reihe von case-Anweisungen / etc erfordern, um die oben erwähnten Einschränkungen zu bewältigen.
quelle
Sie können diese Konvertierungen auch mit .NET Framework durchführen:
JSON zu XML: mithilfe von System.Runtime.Serialization.Json
XML zu JSON: mithilfe von System.Web.Script.Serialization
quelle
Ich bin mir nicht sicher, ob eine solche Umwandlung sinnvoll ist (ja, viele tun dies, aber meistens, um einen quadratischen Stift durch ein rundes Loch zu zwingen) - es gibt eine strukturelle Impedanzfehlanpassung und die Umwandlung ist verlustbehaftet. Daher würde ich gegen solche Format-zu-Format-Transformationen empfehlen.
Wenn Sie dies tun, konvertieren Sie zuerst von json zu object, dann von object zu xml (und umgekehrt für die umgekehrte Richtung). Eine direkte Transformation führt zu hässlicher Ausgabe, Informationsverlust oder möglicherweise zu beidem.
quelle
Vielen Dank für die Antwort von David Brown . In meinem Fall von JSON.Net 3.5 befinden sich die Konvertierungsmethoden unter der statischen Klasse JsonConvert:
quelle
Ich habe lange gesucht, um alternativen Code zur akzeptierten Lösung zu finden, in der Hoffnung, keine externe Baugruppe / kein externes Projekt zu verwenden. Dank des Quellcodes des DynamicJson- Projekts habe ich Folgendes gefunden :
Hinweis: Ich wollte für xPath-Zwecke ein XmlDocument anstelle eines XElement. Außerdem geht dieser Code offensichtlich nur von JSON nach XML. Es gibt verschiedene Möglichkeiten, das Gegenteil zu tun.
quelle
Hier ist der vollständige C # -Code zum Konvertieren von XML in JSON
Um eine bestimmte XML-Zeichenfolge in JSON zu konvertieren, rufen Sie einfach die folgende XmlToJSON () -Funktion auf.
quelle
Probieren Sie diese Funktion aus. Ich habe es gerade geschrieben und hatte nicht viel Gelegenheit, es zu testen, aber meine vorläufigen Tests sind vielversprechend.
quelle
Hier ist ein einfaches Snippet, das einen XmlNode (rekursiv) in eine Hashtabelle konvertiert und mehrere Instanzen desselben untergeordneten Elements in einem Array (als ArrayList) gruppiert. Die Hashtable wird normalerweise von den meisten JSON-Bibliotheken zur Konvertierung in JSON akzeptiert.
quelle
Cinchoo ETL - eine Open-Source-Bibliothek, mit der Xml mit wenigen Codezeilen problemlos in JSON konvertiert werden kann
Xml -> JSON:
JSON -> Xml:
Weitere Informationen finden Sie im CodeProject-Artikel zur Kasse.
Haftungsausschluss: Ich bin der Autor dieser Bibliothek.
quelle
Ich habe David Brown gesagt, aber ich habe die folgende Ausnahme bekommen.
Eine Lösung wäre, die XML-Datei mit einem Root-Element zu ändern. Dies ist jedoch nicht immer erforderlich, und für einen XML-Stream ist dies möglicherweise auch nicht möglich. Meine Lösung unten:
Beispiel-XML, das den Fehler generiert:
quelle
Ich habe die folgenden Methoden verwendet, um den JSON in XML zu konvertieren
Und
Ich habe die Klasse Item verwendet, um die Elemente darzustellen
Es klappt....
quelle
Um dies zu konvertieren
JSON
,XML
versuchen Sie Folgendes:Um dies zu konvertieren
XML
,JSON
versuchen Sie Folgendes:quelle
Verwenden Sie die Bibliothek eines Drittanbieters, anstatt eigenen Code zu schreiben, um JSON oder XML-Zeichenfolgen zu analysieren. Wenn es einmal verwendet wird, versuchen Sie es online zu konvertieren. Json zu Xml https://www.easycodeforall.com/Json2Xml.jsp Xml zu Json https://www.easycodeforall.com/Xml2Json.jsp
quelle