Während des Entwicklungsprozesses müssen Sie häufig Daten mit anderen Systemen austauschen. Die Formate des Datenaustauschs umfassen XML, JSON usw. JSON ist ein leichtes Datenformat, das effizienter als XML ist. 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}] // Datenobjektformat
Aus 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 String -Name; // Alter private String -Alter; // Adresse private String -Adresse; public String getName () {return name;} public void setName (String name) {this.name = name;} public String Getage () {} public void setage () {this. this.th) {this. Adresse;} public void setAddress (String -Adresse) {this.address = adress;}@oversidepublic String toString () {return "student [name =" + name + ", ay" + ay ", adress =" + 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 JSONObjectJsonObject json = jsonObject.fromObject (stu); // 2. Verwenden Sie JsonArrayjsonArray Array = jsonArray.fromObject (stu); String strjson = json.toString (); String Strarrray = array.toString (); System.out.println ("Strjson:"+Strjson);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 verschiedener Formate String Objectstr = "{/" Name/":/" JSON/",/" Age/":/" 24/",/" Adresse/":/" Xicheng District, Peking/"}"; String; String; String; arraystr = "[{/" name/":/" json/",/" ay/":/" 24/",/" adresse/":/" peking xicheng District, peking/"}]"; // 1. Verwenden Sie JSONObjectJsonObject jsonObject = jsonObject.fromObject (ObjectStr); Student stu = (student) jsonObject.tobean (jsonObject, student.class); // 2. Verwenden Sie JsonArrayjsonArray JsonArray = JsonArray.FromObject (ArrayStr); // Holen Sie sich das erste Element des JsonArray -Objekts o = jsonarray.get (0); Student.class); system.out.println ("stu:"+stu);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 JsonArrayJsonArray ListArray = jsonArray.fromObject (Listen); // system.out.println ("ListObject:"+listObject.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/",/" adresse/":/" peking xicheng District/"}]"; Student.class); für (student stu: list2) {system.out.println (stu);} // in Array student [] ss = (student []) jsonArray.toarray (jsonArray.fromObject (Arraystr), Student.Class); for (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"); map <String, Stu> map = new Hashmap <String, Student> (); JsonObjectJsonObject mapObject = jsonObject.fromObject (MAP); System.out.println ("mapObject"+mapObject.toString ()); // 2. JsonArrayjsonArray Maparray = jsonArray.fromObject (MAP); System.out.println ("MapArray:"+maparray.toString ());}Das Ergebnis drucken,
MapObject {"First": {"Adresse": "Shanghai, China", "Alter": "23", "Name": "JSON"}}
Maparray: [{"First": {"Adresse": "Shanghai, China", "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/",/" Alter/":/" 23/",/" name/":/" json/"}"; // jsonobjectjsonobject jsonobject = jsonobject.from. HashMap (); map.put ("First", student.class); // Die Tobean -Methode wird verwendet, und drei Parameter sind für mybean my = (mybean) jsonObject.tobean (jsonObject, mybean.class, map);Das Ergebnis drucken,
Student [Name = JSON, Alter = 23, Adresse = Shanghai, China]
Unten ist der Code von MyBean.
package com.cn.study.day4;import java.util.Map;import com.cn.study.day3.Student;public class MyBean {private Student first;public Student getFirst() {return first;}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 eine detaillierte Erklärung der Beispiele für JSON -Strings und Java -Objekte, die Ihnen vom Herausgeber vorgestellt wurden. Ich hoffe, es wird für Sie hilfreich sein!