Viele Daten mit Klammern [] erschienen in der Projektdatenbank. Der Test berichtete über einen Fehler. Nach der Fehlerbehebung wurde es durch die Verwendung von JSON-Lib JAR-Paket verursacht. JSON-LIB konvertiert Nullwerte in [] während des Umwandlung von XML-Zeichenfolgen in das JSON-Format. Jetzt werde ich kurz die Ähnlichkeiten und Unterschiede zwischen den beiden XML zu JSON -Paketen zusammenfassen. Vielleicht, weil solche Fragen relativ einfach sind, obwohl jemand solche Fragen online gestellt hat, wurden keine Antworten gefunden. Um Junior -Programmierer wie mich so schnell wie möglich Probleme zu entdecken und zu lösen, schrieb ich diesen Blog -Beitrag.
Die meisten JAR-Pakete für XML zu JSON, die online gefunden werden können, sind net.sf.json-lib. Dieses Paket wird bei JSON -Parsen mehr verwendet, aber der Nachteil ist, dass es mehr Abhängigkeitspakete benötigt. Aber hier werde ich nur über sein XML mit JSON sprechen.
1.NET.SF.JSON-LIB TO JSON;
Json json = xmlSerializer.read (xml);
Das Problem mit dieser Methode ist, dass sie den Nullwert in [] umwandeln. Verwenden Sie JSON.get (Wert) .getClass, um die Art von [] zu erhalten. Sie können feststellen, dass JSON-LIB den Nullwert als JsonArray-Typ anstelle einer Zeichenfolge erkennt, und die ToString-Methode von JsonArray wird als [,,,,] umgeschrieben.
Wenn Sie diese Methode weiterhin verwenden möchten, können Sie die folgenden Änderungen vornehmen. Wenn Sie die GetString () -Methode verwenden, um den von XML konvertierten JSON -Objektwert zu erhalten, bestimmen Sie zunächst, ob der Typ String ist, und dann erhalten.
JSON.get (Wert) Instanz von String? Json.getString (Wert): ""
2. org.json an JSON:
org.json.jsonObject jsonobj = org.json.xml.tojsonObject (xml);
Der [] Wert wird nicht generiert, das Stammetag wird jedoch beibehalten (das Standard-XML-Dokument hat und nur ein Stammetag. Das sogenannte Stammetag ist ein Paar <Root-Tags> </root-Tags>, das alle anderen Tags enthält), und das allgemeine Root-Tag ist für die Daten bedeutungslos, wenn Sie die Verarbeitung durchführen müssen, die Verarbeitung benötigen.
jsonobj.get ("root");Hier ist der Testcode:
Paket com.pptv.ppvision.util; import org.json.xml; import net.sf.json.jsonObject; import net.sf.json.xml.xmlserializer; public class xml2jsontest {private statische String xml = "<root> <user> <name> WELNET </name> <sex> </sex> </user> </root>"; public static void main (String [] args) {testorgjson (); testxmlSerializer (); } public static void testorgjson () {org.json.jsonObject jsonObj = xml.tojsonObject (xml); System.out.println ("org.json xml2json:"+jsonObj); org.json.jsonObject user = jsonobj.getJsonObject ("root"). getJsonObject ("Benutzer"); // org.json muss das root -Tag system.out.println entfernen ("Benutzername:"+user.getString ("Name"); System.out.println ("Geschlecht:"+user.getString ("Sex")); } public static void testxmlSerializer () {xmlSerializer xmlSerializer = new XmlSerializer (); JsonObject jsonObject = (jsonObject) xmlSerializer.read (xml); System.out.println ("JSON-LIB XML2JSON-Ergebnis:"+jsonObject); JsonObject user = jsonObject.getJsonObject ("user"); System.out.println ("Benutzername:"+user.get ("Name")); System.out.println ("Geschlecht:"+(user.get ("sex") Instanz von String? User.getString ("Sex"): ""); }}Hier sind zwei Methoden für Sie
Eine darin besteht darin, die GetString () -Methode zu verwenden, um den von XML konvertierten JSON -Objektwert zu erhalten, zuerst bestimmen, ob der Typ String ist, und dann zu erhalten.
Einer ist org.json
Sie können auswählen, welche Methode nach Ihren Anforderungen angewendet werden soll