Vorwort
JSON ist die Abkürzung der JavaScript -Objektnotation, eine leichte Form des Datenaustauschs, eine Alternative zu XML und ist kleiner, schneller und leichter analysiert als XML. Da JSON bei der Beschreibung von Objekten die JavaScript-Syntax verwendet, ist es Sprache und plattformunabhängige und viele JSON-Parser und Klassenbibliotheken wurden im Laufe der Jahre entwickelt.
JSON hat die folgenden Formen:
Ein Objekt ist eine ungeordnete Sammlung von "Namen/Wert" -Paaren "". Ein Objekt beginnt mit "{" (Open -Bracket) und endet mit "}" (Close -Klammer). Jeder "Name" folgt von einem ":" (Colon); "'Name/Wert' Paar" wird durch "(Komma) getrennt.
Eine geordnete Liste von Werten. In den meisten Sprachen wird es als Array, als Vektor, eine Liste, eine Sequenz implementiert.
Dies sind gemeinsame Datenstrukturen. Derzeit unterstützen die meisten Programmiersprachen sie in irgendeiner Form. Dies ermöglicht es, Daten im gleichen Format zwischen verschiedenen Programmiersprachen auszutauschen.
Um Daten aus den URLs anderer Server zu erhalten, übertragen wir im Allgemeinen JSON -Daten. Zum Beispiel muss Server B Paging -Informationen von den URLs von Server A erhalten. Nachdem sie JSON -Zeichen erhalten haben, muss er in Ihr eigenes Java -Objekt konvertiert werden, wenn es bequem und schnell zu bedienen ist.
Hier habe ich drei JSON-Drittanbieter ausprobiert, um einen Google Gson zu konvertieren. Dieser scheint nicht in der Lage zu sein, erfolgreich konvertiert zu werden. Es meldet immer wieder einen JSON -Formatfehler, aber die Überprüfung war korrekt und der Versuch ist fehlgeschlagen. Der zweite Typ ist net.sf.json, was bedeutet, dass keine Fehler gemeldet werden, aber der Wert des Objekts ist immer leer. Nur JSON-Simple kann Objekte erfolgreich konvertieren
JSON analysieren
Zunächst müssen wir JSON analysieren, um zu sehen, ob JSON ein Standard -JSON -Format ist. Wir können JSON in vielen Online -Formaten im Internet anzeigen. Im Allgemeinen wechseln wir die Suppe und nicht die Medizin, wenn wir JSON als Objekt analysieren.
Das erste: Ich muss die JSON -Struktur kennen. Hier starte ich den Server A und holt eine Reihe von JSON -Daten von seiner URL aus.
Wenn Sie die Kopie -JSON -Daten in das Formatierungswerkzeug werfen, sehen Sie die Struktur deutlich:
{"Eventlist": [{"ID": 1030, "EventID": "1508779115818499700", "Createtime": 1508779115000, "Endtime": 1508865480000, "eventContent": "123", "OpenID": "O4EWZ06XZ06XZHW6MC2GMZ", ":" O4EWZ06XZW6MC2GMZM ":" O4EWZ06XZHW6MC2GMZM ":" O4EWZ06XZHW6MC2GMZMZ ":" O4EWZ06XZHW6MC2Gmc2. }, {"id": 1029, "eventId": "1508382907251660498", "CreateTime": 1508382906000, "Endtime": 1508383020000, EventContent ":" ahhhhhhhhhhhhhhhhhhhhhhhhh "," OpenID ": "O4EWZ06XZHW6MC2GMZMYVDETX1ZK"}, {"ID": 1028, "EventId": "1508308708414580378", "Createtime": 1508308721000, Endtime ": 150830904000000000000000000000000,": ",", ",", ",", ": "O4EWZ06XZHW6MC2GMZMYVDETX1ZK"}, {"ID": 1027, "EventID": "1508308463330664814", "Createtime": 1508308480000, "Endtime": 1508308600000000000000, ":": ",", ",", ",": "O4EWZ06XZHW6MC2GMZMYVDETX1ZK"}, {"ID": 1026, "EventID": "1508308463017144213", "Createtime": 1508308479000, "Endtime": 15083086600000000000000, ":": ",", ",", ",", ",", ": "O4EWZ06XZHW6MC2GMZMYVDETX1ZK"}], "Seite": "1", "Größe": "5", "IsHaspage": "1"}Zweitens: Erstellen Sie entsprechende Entitätsklassen basierend auf der Struktur
import com.yhn.consumer.entity.event; import lombok.data; import org.json private String -Seite; private Saitengröße; private String iSHaspage; public eventVo (jsonObject Object) {// Konstruktormethode weist der Objekte Eventlist = (List <Event>) Object.get ("EventList") Wert zu; Page = (String) Object.get ("Seite"); size = (String) Objekt.get ("Größe"); isHaspage = (String) Objekt.get ("isHaspage"); }} Da es sich um eine eingebettete Struktur handelt, ist Folgendes die Ereignisklasse in private List<Event> eventList .
import lombok.data; import org.hibernate Implementiert serialisierbar {// Dies ist das Ereignis in der Liste in eventVo @ID @GeneratedValue Private Integer ID; // Sortierfunktion private String eventId; // Event ID Private Datum CreateTime; // Erstellungszeit Private Datum Endzeit; // Time private String eventContent aktualisieren; // Ereignisinhalte private String OpenID erinnern; //Benutzer-ID} Testklasse
Als nächstes wird auch die Struktur geschrieben. Sie schreiben einen Unit -Test auf dem Server B, um festzustellen, ob der Wert erfolgreich zugewiesen werden kann.
@Test public void clientDemo () löst Ausnahme aus {StringBuilder json = new StringBuilder (); Url urlObject = new url ("http://127.0.0.1/meetingsign/test/server?openid=o4ewz06xzhw6mc2gmzmyvDetx1zk&page=2&size=5"); // URL httpurlConnection uc = (httpurlConnection) urlobject .OpenConNection (); // VerbindungsbuferedReader in = neuer BufferedReader (neuer InputStreamReader (uc.getInputStream (), "UTF-8") aktivieren; String inputline = null; while ((inputline = in.readline ())! = null) {json.Append (inputline); // json} in.close () spalten; uc.disconnect (); System.out.println (JSON); // Sehen Sie, ob Sie es bekommen. // Entfernen Sie mögliche UTF-8 usw., da es möglicherweise BOM-Header-Dateien enthalten. String result = formatString (json.toString ()); JsonParser Parser = new JsonParser (); org.json.simple.jsonObject data = new org.json.simple.jsonObject (); Data = (org.json.simple.jsonObject) Parser.Parse (Ergebnis); EventVo eventVo = new eventVo (Daten); // den Wert in log.info ("eventvo = {}", eventVo) übergeben; }/*** Entfernen Sie den Bombenheader*/public static String formatString (String s) {if (s! = Null) {s = s.ReplaceAll ("/ufeff", ""); } return s; } Testergebnisse
Es wird dem Objekt einen Wert zugewiesen
Zusammenfassen
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Referenzwert für das Studium oder die Arbeit eines jeden hat. Wenn Sie Fragen haben, können Sie eine Nachricht zur Kommunikation überlassen. Vielen Dank für Ihre Unterstützung bei Wulin.com.