Gson Tojson und von Json für JSON

Gson Tojson und von Json für JSON

Serialisierung und Deserialisierung

Eine Datei kann auf der Festplatte gespeichert oder über das Netzwerk gesendet werden, indem nur die Datei von Anfang an byte per Byte gesendet wird (als Quellcode, Bytecode oder Binärcode). Das ist keine Serialisierung. Serialisierung ist der Prozess der Konvertierung eines Objekts in einen Strom von Bytes, zur Speicherung oder Übertragung, noch als Objekt. Dies ist nicht dasselbe wie das Lesen der Bytes von Anfang an und Senden oder Speichern. Das Gegenteil von Serialisierung ist die Deserialisierung. Nicht mush -Serialisierung als Prozess wird mit primitiven Objekten selbst durchgeführt.

JSON steht für JavaScript -Objektnotation. JSON ist ein Format für die Serialisierung. Ein Java -Objekt (definiert) kann zur Übertragung oder Speicherung in eine JSON -Darstellung (String) umgewandelt werden. Zur Wiederverwendung wird die JSON -Darstellung wieder in das Java -Objekt umgewandelt. GSON ist eine Java -Bibliothek, die zur Konvertierung in beide Richtungen verwendet wird.

Verwenden Sie zur Serialisierung die Methode tojson () des GSON -Objekts. Verwenden Sie zur Deserialisierung die Methode von JSON () des GSON -Objekts. Dieser Artikel erläutert die Grundlagen der Serialisierung von Java -Objekten zur JSON -Darstellung mit der Methode tojson () und der Deserialisierung der JSON -Darstellung (String) zum Java -Objekt mit der methode von json ().

Artikelinhalt

  • Herunterladen und Einrichten der GSON -Bibliothek
  • Primitive Java -Objekte
  • Array
  • Objekt
  • Abschluss

Herunterladen und Einrichten der GSON -Bibliothek

Die GSON -Bibliothek wird als JAR -Datei geliefert. Eine Bibliothek wie GSON wird als Abhängigkeit bezeichnet. Es kann kostenlos heruntergeladen werden. Der Rest dieses Abschnitts erklärt, was der Autor mit seinem Host Ubuntu OS -Computer gemacht hat. Der Leser kann den Ansatz wiederholen oder ändern.

Er erstellte ein Verzeichnis, das als Abhängigkeiten bezeichnet wird, in/home/user/zu haben:/home/user/abhängig, wobei ein Benutzer durch den Benutzernamen ersetzt werden sollte.

Er hat die Bibliotheksdatei GSON-2 heruntergeladen.8.9.Jar aus dem Hyperlink:

https: // suche.Maven.org/remoteContent?filepath = com/google/code/gson/gson/2.8.9/gson-2.8.9.Krug

und hat es so gerettet, wie es im Abhängigkeitsverzeichnis ist.

Als nächstes hat er bei der Eingabeaufforderung wie folgt eine Klassenvariable eingerichtet (eingegeben):

exportieren classpath =/home/user/apellscies

Das Java -Programm sollte mindestens Folgendes haben:

Import com.Google.GSON.GSON;
öffentliche Klasse Theclass
public static void main (String [] args)
Gsonongson = new gson ();
/ *Rest des Codes */

Der Name der Quellcode -Datei ist die Klasse.Java. Beachten Sie den Namen des importierten Pakets, das sich im GSON-2 befindet.8.9.JAR -Datei. Die folgende Befehlszeile wurde verwendet, um das Programm in den Byte -Code zu kompilieren:

javac -classPath/home/user:/home/user/abhängigkeiten/gson-2.8.9.Jar Theclass.Java

Beachten Sie den Schalter -Klassenpfad . Hier gibt es zwei Wege, die durch einen Dickdarm getrennt sind (kein Raum um den Dickdarm). Der erste ist der Weg zur Hauptdatei, TheClass.Java; und der zweite ist der Pfad zur Bibliotheksdatei GSON-2.8.9.Krug.

Der resultierende Bytecode wird mit der folgenden Befehlszeile ausgeführt:

java -classPath/home/user:/home/user/abhängigkeiten/gson-2.8.9.Jar Theclass

Der Schalter und die beiden Pfade sind aus den gleichen Gründen noch da, in ihren Positionen da. Der Bytecode sollte erfolgreich laufen, was alles gleich ist.

Primitive Java -Objekte

Dieser Abschnitt zeigt, welchen Wert ein primitives Objekt nach der Serialisierung als JSON -String haben wird und welchen Wert es nach der Deserialisierung haben wird. Um die Methoden tojson () und der JSON () zu verwenden, muss das GSON -Objekt mit einer Erklärung erstellt werden wie:

Gson gson = new gson ();

wobei GSON das GSON -Objekt ist, das mit seinen Methoden verwendet werden soll: tojson () für die Serialisierung und von json () zur Deserialisierung.

Byte

Betrachten Sie den folgenden Code innerhalb der Main () -Methode:

Gsonongson = new gson ();
Byte Bt = 56;
String Str = GSON.tojson (bt);
Byte btr = gson.von json (str, byte.Klasse);
System.aus.println (btr);

Der Ausgang ist 56. Dieser Code serialisiert und deserialisiert. Beachten Sie das zweite Argument von json (), das Byte ist.Klasse. Die Serialisierung eines Typobjekts wird zu einer JSON -Zeichenfolge, und die Deserialisierung sollte auf denselben Typ zurückkehren. Deshalb Byte.Klasse ist vorhanden.

int

Betrachten Sie den folgenden Code innerhalb der Main () -Methode:

Gsonongson = new gson ();
int in = 0;
String Str = GSON.tojson (in);
int inr = gson.von json (str, int int.Klasse);
System.aus.println (INR);

Die Ausgabe ist 0. Beachten Sie das zweite Argument von json (), was int ist.Klasse.

doppelt

Betrachten Sie den folgenden Code innerhalb der Main () -Methode:

Gsonongson = new gson ();
doppelte db = 7.8;
String Str = GSON.Tojson (DB);
Doppel -DBR = GSON.von json (str, doppelt.Klasse);
System.aus.println (dbr);

Die Ausgabe ist 7.8. Beachten Sie das zweite Argument für fromjson (), das doppelt ist.Klasse.

verkohlen

Betrachten Sie den folgenden Code innerhalb der Main () -Methode:

Gsonongson = new gson ();
char ch = 'e';
String Str = GSON.tojson (ch);
char chr = gson.von json (str, Char.Klasse);
System.aus.println (chr);

Der Ausgang ist e. Beachten Sie das zweite Argument für fromjson (), das ist char.Klasse.

boolean

Betrachten Sie den folgenden Code innerhalb der Main () -Methode:

Gson gson = new gson ();
boolean bl = false;
String Str = GSON.tojson (bl);
boolescher Blr = gson.von json (str, boolean.Klasse);
System.aus.println (Blr);

Die Ausgabe ist falsch. Beachten Sie das zweite Argument von json (), der booleschen ist.Klasse.

Null

Betrachten Sie den folgenden Code innerhalb der Main () -Methode:

Gson gson = new gson ();
String nl = null;
String Str = GSON.Tojson (NL);
String nlr = gson.von Json (str, String.Klasse);
System.aus.println (nlr);

Der Ausgang ist null. Beachten Sie das zweite Argument für fromjson (), die String ist.Klasse für die Art von Null.

Array

Array buchstäblich

Betrachten Sie den folgenden Code:

Gson gson = new gson ();
double [] dbs = 1.1, 2.2, 3.3, 4.4;
String Str = GSON.Tojson (DBS);
double [] dbsr = gson.Fromjson (str, double [].Klasse);
System.aus.println (dbsr [0]+""+dbsr [1]+""+dbsr [2]+""+dbsr [3]);

Die Ausgabe ist:

1.1 2.2 3.3 4.4

Nach dem Erstellen des GSON -Objekts wird ein Java -Doppelarray erstellt. Als nächstes wird das Array Literal in eine JSON -String umgewandelt. Ja, obwohl der Code hier mit einem Array befasst ist und nicht mit einem primitiven Typ, wird die Methode tojson () immer noch verwendet, und entsprechend wird von JSON () immer noch am Empfänger verwendet. Der JSON -String -Array Literal ist:

"[1.1, 2.2, 3.3, 4.4] "

Dieser Stachel ist das, was in den Strom eingebaut ist, der lokal übertragen oder gespeichert wird. Die von JSON () Methode wandelt das JSON -Array -String buchstäblich in das Java -Array (wörtlich) am Empfangsende um.

Betrachten Sie den folgenden Code, der mit einem Java -Array von Zeichenfolgen beginnt, wobei jede Zeichenfolge ein Element in einer Leseablage ist:

Gson gson = new gson ();
String [] strs = "Pen", "Übung Buch", NULL, "Lehrbuch";
String Str = GSON.Tojson (STRS);
String [] strsr = gson.Fromjson (str, String [].Klasse);
System.aus.println (strsr [0]+","+strsr [1]+","+strsr [2]+","+strsr [3]);

Die Ausgabe ist:

Stift, Excercise Book, Null, Lehrbuch

Nach dem Erstellen des GSON -Objekts wird ein Java -String -Array erstellt. Als nächstes wird das Array Literal in eine JSON -String umgewandelt. Der JSON -String -Array Literal ist:

"[" Pen "," Übungsbuch ", Null," Lehrbuch "]"

Dieser Stachel ist das, was in den Strom eingebaut ist, der lokal übertragen oder gespeichert wird. Die von JSON () Methode wandelt die JSON -Array -String -Saitenanfälle am Empfangsende zum Java -Array (wörtlich) zurück zum Java -Array. Beachten Sie, dass der Klassentyp (String []) für die Rückwärtsumwandlung benötigt wird.

Senden von Array buchstäblich mit dem Namen Array

Das Problem mit dem obigen Schema ist, dass am Ziel das Array wahrscheinlich einen anderen Namen für den rekonstruierten Java -Code erhalten wird. Der Array -Name kann als ein einzelnes Wort Array vor dem Interesse gesendet werden, um dieses Problem zu lösen. Das Java -Programm erhält zwei Arrays am empfangenden Ende und interpretiert sie angemessen.

Objekt

Objektinhalt

Betrachten Sie den folgenden Code:

Import com.Google.GSON.GSON;
Klasse Aclass

int num = 10;
String str1 = null;
String str2;
String str3 = "drei";
int mthd (int it)

Gib es zurück;

Es beginnt mit der Einfuhr des GSON -Pakets, und dann gibt es die Beschreibung einer Klasse namens Aclass. Die Klasse hat vier Felder (Eigenschaften) und eine Methode. Einer der Werte der Felder ist null, und ein anderer hat keinen Wert. Ein geeigneter Code in der Funktion main () für diese Klasse lautet:

Gsonongson = new gson ();
ACLASS OBJ = New Aclass ();
String Str = GSON.tojson (obj);
Aclassobjr = gson.von json (str, aclass.Klasse);
System.aus.println (objr.num+","+objr.str1+","+objr.str2+","+objr.str3);
int in = objr.mthd (5);
System.aus.println (in);

Die Ausgabe besteht aus zwei Zeilen, nämlich:

10, null, null, drei
5

Nach dem Erstellen des GSON -Objekts, einem anderen Objekt, wird OBJ aus der Klasse instanziiert, ACLASS. Als nächstes wird das Array Literal in eine JSON -String umgewandelt. Ja, obwohl der Code hier mit einem instanziierten Objekt befasst ist und nicht mit einem primitiven Typ, wird die Methode tojson () immer noch verwendet, und entsprechend von Json () wird immer noch am Empfänger verwendet. Die JSON -Objektinhaltszeichenfolge (Klassen-) Objektinhalte ist wie folgt:

"num": 10, "str1": null, "str2: null," str3 ":" drei "," mthd ":" int mthd (int it) return it; "

Beachten Sie die abgrenzenden Klammern anstelle von quadratischen Klammern, um sie von JSON zu unterscheiden. Es besteht aus Schlüssel-/Wertpaaren. Der Schlüssel wird von seinem Wert mit einem Dickdarm getrennt. Die Paare sind durch Kommas voneinander getrennt.

Dies sollte in den Strom für Übertragung oder Sparen vor Ort eingebaut werden. Tatsächlich lautet die JSON -Zeichenfolge für das Objekt:

"num": 10, "str3": "drei"

Das Paar für das Feld mit Nullwert wird weggelassen. Das Paar für das Feld mit dem Namen, aber ohne Wert wird ebenfalls weggelassen. Der Methodenname und seine Definition sind ebenfalls weggelassen. Dies bedeutet, dass auch die Klasseninformationen übertragen werden müssen. Dies kann mit einem vorhergehenden JSON -Array erfolgen. In den Codeproben dieses Artikels wurde nichts übertragen, sodass die Klasseninformationen weiterhin zur Verwendung von JSON () zur Verfügung stehen .

Die von JSON () () Methode wandelt die JSON -Instanziation des Objekts um ein Java -Objekt am empfangenden Ende zurück zu einem Java -Objekt. Um den gleichen Namen für das Objekt zu haben, muss der Name des Objekts am empfangenden Ende (getrennt) übertragen werden. Nachdem das Objekt am Empfangsende nachgebaut wurde, können auf die Felder und Methoden zugegriffen werden (genannt). Im obigen Code wird die Methode aufgerufen, um 5 zu führen.

Abschluss

JSON ist ein serialisiertes Format. Java -Objekte können zum JSON -Format serialisiert werden. Am anderen Ende findet die Deserialisierung statt, um dasselbe Objekt in der Quelle zu haben. Die Deserialisierung findet nicht statt, wenn das Objekt gespeichert wird. Nicht nur Arrays und instanziierte Objekte können serialisiert werden. Andere Objekte wie Karten und Sammlungen können serialisiert und deserialisiert werden. Die Java -Bibliothek, die für diese Prozesse verwendet werden kann, ist die GSON -Bibliothek. Seine Methode tojson () wird für die Serialisierung verwendet, und seine andere Methode von Json () wird zur Deserialisierung verwendet.