Umkehrung von JSON-Saiten und Java-Objekten [JSON-LIB]
Während des Entwicklungsprozesses müssen Sie häufig Daten mit anderen Systemen austauschen. Die Formate des Datenaustauschs umfassen XML, JSON usw. JSON als leichtes Datenformat ist effizienter als XML. XML benötigt viele Tags, die zweifellos den Netzwerkverkehr belegen. JSON macht in dieser Hinsicht gute Arbeit. Schauen wir uns das Format von JSON an.
JSON kann zwei Formate haben, eines ist Objektformat und das andere ist Array -Objekt.
{"Name": "Json", "Adresse": "Xicheng District, Peking", "Alter": 25} // Jsons Objektformat String [{"Name": "Json", "Adresse": "Xicheng District, Peking", "Alter": 25}] // DatenobjektformatAus den beiden oben genannten Formaten können wir sehen, dass der einzige Unterschied zwischen dem Objektformat und dem Array -Objektformat darin besteht, dass [] dem Objektformat hinzugefügt wird. Schauen Sie sich dann die spezifische Struktur an. Es ist ersichtlich, dass beide in Form von Schlüsselwertpaaren erscheinen, die durch Kommas (,) im englischen Zustand getrennt sind.
Dieses Format ist auch sehr beliebt, wenn die Datenübertragung im Front-End und im Back-End durchgeführt wird. Das Back-End gibt eine Zeichenfolge im JSON-Format zurück. Das Front-End verwendet die JSON.Parse () -Methode in JS, um die JSON-Zeichenfolge in ein JSON-Objekt zu analysieren und dann für das Front-End zu durchqueren.
Kommen wir zum Thema und stellen die gegenseitige Konvertierung zwischen JSON- und Java -Objekten in Java ein.
Um die gegenseitige Übertragung zwischen JSON- und Java-Objekten zu verwirklichen, müssen Sie ein JAR-Paket von Drittanbietern verwenden. Das JSON-Lib-Paket wird hier verwendet. Die Download-Adresse lautet: https://sourceforge.net/projects/json-lib/. JSON-LIB erfordert die Unterstützung von fünf Paketen: Commons-Beanutils-1.8.0.jar, Commons-Collections-2.2.1.Jar, Commons-Lang-2.5.jar, Commons-Logging-1.1.jar und Ezmorph-1.0.6.jar. Sie können es selbst aus dem Internet herunterladen. Die Download -Adresse wird hier nicht mehr veröffentlicht.
JSON-LIB bietet mehrere Klassen, die diese Funktion erfüllen können, wie z. B. JSONObject, JsonArray. Aus dem Namen der Klasse können wir sehen, dass das transformierte JSONObject im Objektformat sein sollte, während die transformierten JSONArray Array -Objekte sein sollten (d. H. Mit der Form []).
1. Die gegenseitige Übertragung von Java gewöhnlichen Objekten und JSON -Saiten
Java-Objekt-》》 String
Ein normales Java -Objekt bezieht sich auf eine Java -Bohne in Java, dh eine Entitätsklasse, wie z.
Paket com.cn.study.day3; öffentliche Klasse Student {// Name privater Zeichenfolge Name; // Alter private Stringalter; // Adresse private Zeichenfolge Adresse; public String getName () {return name; } public void setName (String -Name) {this.name = name; } public String getage () {Return Age; } public void Setage (String Age) {this.age = Age; } public String getAddress () {Rückgabeadresse; } public void setAddress (String -Adresse) {this.address = address; } @Override public String toString () {return "student [name =" + name + ", ay" + age + ", address =" + adress + "]"; }}Oben ist eine normale Java-Entitätsklasse von mir. Sehen Sie, wie JSON-LIB sie in eine Saitenform umwandelt.
public static void convertObject () {Student stu = new Student (); stu.setname ("json"); stu.setage ("23"); stu.setaddress ("Peking Xicheng District"); // 1. Verwenden Sie JsonObject JsonObject json = jsonObject.fromObject (STU); // 2. Verwenden Sie JsonArray JsonArray Array = jsonArray.fromObject (STU); String strjson = json.toString (); String strarrray = array.toString (); System.out.println ("Strjson:"+strjson); System.out.println ("Strarrray:"+Strarrray); }Ich habe die Entitätsklasse eines Schülers definiert und sie dann mit JSONObject und JsonArray in JSON -Strings umgewandelt. Sehen wir uns das gedruckte Ergebnis unten an.
Strjson: {"Adresse": "Xicheng District, Peking", "Alter": "23", "Name": "Json"} Strarrray: [{"Adresse": "Xicheng District, Peking", "Alter": "23", "Name": "JSON"}]Aus den Ergebnissen können wir sehen, dass beide Methoden Java -Objekte in JSON -Zeichenfolgen umwandeln können, aber die konvertierte Struktur ist unterschiedlich.
JSON String-》》 Java-Objekt
Das obige erklärt, wie Java -Objekte in JSON -Saiten umgewandelt werden können. Lassen Sie uns sehen, wie Sie das JSON -String -Format in Java -Objekte umwandeln.
Zunächst müssen Sie zwei Zeichenfolgen in verschiedenen Formaten definieren, Sie müssen doppelte Zitate verwenden/entkommen.
public static void jSonstrttojava () {// zwei Zeichenfolgen in verschiedenen Formaten String Objectstr = "{/" name/":/" json/",/" ay/":/" 24/",/" Adresse/":/" Xicheng District, Peking/"}"; String arrayStr = "[{/" name/":/" json/",/" ay/":/" 24/",/" adresse/":/" xicheng District, Peking/"}]"; // 1. Verwenden Sie JSONObject jsonObject jsonObject = jsonObject.fromObject (ObjectStr); Student stu = (Student) jsonObject.tobean (jsonObject, student.class); // 2. Verwenden Sie JsonArray JsonArray jsonArray = jsonArray.fromObject (ArrayStr); // Erhalten Sie das erste Element des JsonArray -Objekts o = jsonArray.get (0); JsonObject jsonObject2 = jsonObject.fromObject (o); Student stu2 = (Student) jsonObject.tobean (jsonObject2, student.class); System.out.println ("stu:"+stu); System.out.println ("stu2:"+stu2); }Das Druckergebnis ist:
STU: Student [Name = JSON, Alter = 24, Adresse = Xicheng District, Peking] Stu2: Student [Name = JSON, Alter = 24, Adresse = Xicheng District, Peking]
Wie aus dem obigen Code ersichtlich ist, kann die Verwendung von JSONObject JSON -Format -Zeichenfolgen leicht in Java -Objekte umwandeln. Die Verwendung von JSONArray ist jedoch nicht so einfach, da es das Symbol "[]" hat. Nachdem wir das JsonArray -Objekt erhalten haben, nehmen wir das erste Element, das die Verformung des Schülers, das wir benötigen, und dann das erste Element, das sie benötigt, und verwenden Sie dann das Jsonobjekt, um es leicht zu erhalten.
2. Übertragung von Listen- und JSON -Saiten
Liste-》》 Json String
public static void listTojson () {Student stu = new student (); stu.setname ("json"); stu.setage ("23"); stu.setaddress ("Peking Haidian District"); List <Student> lists = new ArrayList <Student> (); lists.add (stu); // 1. Verwenden Sie JSONObject // jsonObject listObject = jsonObject.fromObject (Listen); // 2. Verwenden Sie JsonArray JsonArray ListArray = jsonArray.fromObject (Listen); //System.out.println("ListObject: "+listObject.toString ()); System.out.println ("ListArray:"+listArray.toString ()); }Ich habe JsonObject verwendet, um zu wetten. Schauen wir uns die Ergebnisse vor dem Kommentar an.
Ausnahme im Thread "Haupt" net.sf.json.jsonexception: 'Objekt' ist ein Array. Verwenden Sie stattdessen JsonArray
Sag mir, dass es eine Ausnahme gibt. Durch die Überprüfung des Quellcodes stellte ich fest, dass ich bei Verwendung der FromObject -Methode zuerst den Parametertyp beurteilen werde. Hier sage ich uns, dass der übergebene Parameter ein Array -Typ ist, da die ArrayList verwendet wird. Schauen wir uns das Ergebnis nach dem Kommentar an.
ListArray: [{"Adresse": "Haidian District, Peking", "Alter": "23", "Name": "Json"}] Dieses Ergebnis ist normal.
JSON String-》》 Liste
Aus dem obigen Beispiel können wir feststellen, dass das Listenobjekt nur in das Format des Array -Objekts konvertiert werden kann. Schauen wir uns also die Konvertierung von der Zeichenfolge in die folgende Liste an.
public static void jSontolist () {String arraystr = "[{/" name/":/" json/",/" ay/":/" 24/",/" adress/":/" peking xicheng District/"}]"; // in List List <Student> list2 = (list <Stud Student>) jsonArray.tolist (jsonArray.fromObject (arraystr), student.class) konvertieren; für (Student stu: list2) {System.out.println (stu); } // in Array student [] ss = (student []) jsonArray.toarray (jsonArray.fromObject (arraystr), student.class) konvertieren; für (Student Student: ss) {System.out.println (Student); }}Das Ergebnis drucken,
Student [Name = JSON, Alter = 24, Adresse = Xicheng District, Peking] Student [Name = JSON, Alter = 24, Adresse = Xicheng District, Peking]
Da das Format der Zeichenfolge im Format mit "[]" ist, wird hier das JsonArray -Objekt ausgewählt, das die Verwendung von Tolist und tolistischen Methoden enthält. Ersteres wird in ein Array in Java oder in eine Liste in Java umgewandelt. Da hier eine Entitätsklasse entspricht, wird bei der Verwendung der Typ des generischen (student.class) angegeben, sodass das konvertierte Objekt erhalten werden kann.
3. Die Karte und JSON -String -Konvertierung
Karte-》》 Json String
public static void maptojson () {Student stu = new student (); stu.setname ("json"); stu.setage ("23"); stu.setaddress ("Shanghai, China"); Karte <String, stu> map = new HashMap <String, Student> (); map.put ("First", stu); // 1. JsonObject jsonObject mapObject = jsonObject.fromObject (MAP); System.out.println ("mapObject"+mapObject.toString ()); // 2. JsonArray JsonArray MapArray = jsonArray.fromObject (MAP); System.out.println ("MapArray:"+maparray.toString ()); }Das Ergebnis drucken,
MapObject {"First": {"Adresse": "Shanghai," Alter ":" 23 "," Name ":" JSON "}} MapArray: [{" First ": {" Adresse ":" Shanghai, "Alter": "23", Name ":" JSON "}}]Zwei Formen werden oben gedruckt.
JSON String-》》 Karte
JSON -Zeichenfolgen können nicht direkt in Kartenobjekte konvertiert werden. Um den Wert zu erhalten, der den Schlüssel in Karten entspricht, sind andere Methoden erforderlich.
public static void jsontomap () {String strobject = "{/" First/": {/" Adresse/":/" Shanghai, China/",/" Age/":/" 23/",/" Name/":/" json/"}}"; // JsonObject jsonObject jsonObject = jsonObject.fromObject (Strobject); Map map = new HashMap (); map.put ("First", student.class); // Die TOBEAN -Methode wird verwendet, und für MyBean My = (myBean) jsonObject.tobean (JsonObject, mybean.class, map) sind drei Parameter erforderlich. System.out.println (my.getFirst ()); }Das Ergebnis drucken,
Student [Name = JSON, Alter = 23, Adresse = Shanghai, China]
Unten ist der Code von MyBean.
Paket com.cn.study.day4; import Java.util.map; Import com.cn.study.day3.Student; öffentliche Klasse mybean {Private Student First; public student getfirst () {return zuerst; } public void setFirst (Student First) {this.first = First; }} Unter Verwendung der TOBEAN () -Methode werden drei Parameter übergeben, das erste ist das JsonObject -Objekt, das zweite ist mybean.class und das dritte ist ein Kartenobjekt. Durch MyBean können wir wissen, dass es in dieser Klasse ein erstes Attribut geben muss, und sein Typ ist ein Schüler, der den Schlüssel- und Werttypen in der Karte entspricht, dh dem Typ des Werts, der dem ersten Schlüsseltyp entspricht.
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.