Gson tojson e fromjson per json

Gson tojson e fromjson per json

Serializzazione e deserializzazione

Un file può essere salvato sul disco o inviato sulla rete semplicemente inviando il file così com'è, byte per byte, dall'inizio (come codice sorgente, bytecode o codice binario). Questa non è serializzazione. La serializzazione è il processo di conversione di un oggetto in un flusso di byte, per la conservazione o la trasmissione, ancora come oggetto. Questo non è lo stesso di leggere i byte dall'inizio e invio o salvataggio. L'opposto della serializzazione è la deserializzazione. Non la serializzazione della poltiglia, come processo, viene eseguita con oggetti primitivi da soli.

JSON sta per la notazione dell'oggetto JavaScript. JSON è un formato per la serializzazione. Un oggetto Java (definito) può essere convertito in una rappresentazione JSON (stringa) per la trasmissione o il salvataggio. Per il riutilizzo, la rappresentazione JSON viene convertita nell'oggetto Java. GSON è una libreria Java utilizzata per la conversione in entrambe le direzioni.

Per serializzare, utilizzare il metodo Tojson () dell'oggetto GSON. Per deserializzare, utilizzare il metodo fromjson () dell'oggetto GSON. Questo articolo spiega le basi della serializzazione degli oggetti Java alla rappresentazione JSON, con il metodo Tojson () e la deserializzazione della rappresentazione JSON (String), all'oggetto Java, con il metodo Fromjson ().

Contenuto dell'articolo

  • Download e impostare la libreria GSON
  • Oggetti Java primitivi
  • Vettore
  • Oggetto
  • Conclusione

Download e impostare la libreria GSON

La libreria GSON viene fornita come un file jar. Una biblioteca come GSON viene definita dipendenza. È gratuito da scaricare. Il resto di questa sezione spiega cosa ha fatto l'autore con il suo ospite di Os Computer Ubuntu. Il lettore può ripetere o modificare l'approccio.

Ha creato una directory, chiamata dipendenza, in/home/utente/per avere:/home/utente/dipendenze, in cui un utente deve essere sostituito dal nome utente.

Ha scaricato il file della biblioteca, GSON-2.8.9.barattolo, dal collegamento ipertestuale:

https: // cerca.Esperto di.org/remotecontent?FilePath = com/Google/Code/GSON/GSON/2.8.9/GSON-2.8.9.vaso

e lo ha salvato, così com'è, nella directory delle dipendenze.

Successivamente, al prompt dei comandi, ha impostato (inserito) una variabile di classe, come segue:

Export ClassPath =/Home/User/dipendenze

Il programma Java dovrebbe avere, come minimo, quanto segue:

Importa com.Google.Gson.GSON;
Classe pubblica TheClass
public static void main (string [] args)
Gsongson = new gson ();
/ *REST OF CODICE */

Il nome del file del codice sorgente è il secratura.Giava. Nota il nome del pacchetto importato, che si trova nel GSON-2.8.9.File Jar. La seguente riga di comando è stata utilizzata per compilare il programma in codice byte:

Javac -ClassPath/Home/User:/Home/User/dipendenze/GSON -2.8.9.Jar theclass.Giava

Nota l'interruttore, -Classpath . Ci sono due percorsi qui, separati da un colon (senza spazio attorno al colon). Il primo è il percorso per il file principale, questo.Giava; e il secondo è il percorso del file della libreria, GSON-2.8.9.vaso.

Il bytecode risultante viene eseguito con la seguente riga di comando:

Java -ClassPath/Home/User:/Home/User/dipendenze/GSON -2.8.9.Jar theclass

L'interruttore e i due percorsi sono ancora lì, nelle loro posizioni, per le stesse ragioni. Il bytecode dovrebbe funzionare correttamente, tutto è uguale.

Oggetti Java primitivi

Questa sezione illustra quale valore avrà un oggetto primitivo dopo la serializzazione, come stringa JSON e quale valore avrà dopo la deserializzazione. Per utilizzare i metodi Tojson () e Fromjson (), l'oggetto GSON deve essere creato con una dichiarazione come:

Gson gson = new gson ();

dove GSON è l'oggetto GSON da usare con i suoi metodi: Tojson () per la serializzazione e da JSON () per la deserializzazione.

byte

Considera il seguente codice all'interno del metodo principale ():

Gsongson = new gson ();
byte bt = 56;
Stringa str = gson.Tojson (BT);
byte btr = gson.dajson (str, byte.classe);
Sistema.fuori.println (btr);

L'output è 56. Questo codice serializza e deserializza. Nota il secondo argomento da fromjson (), che è byte.classe. La serializzazione di un tipo di tipo diventa una stringa JSON e la deserializzazione dovrebbe tornare allo stesso tipo. Ecco perché il byte.La classe è presente.

int

Considera il seguente codice all'interno del metodo principale ():

Gsongson = new gson ();
int in = 0;
Stringa str = gson.tojson (in);
int inr = gson.dajson (str, int.classe);
Sistema.fuori.println (INR);

L'output è 0. Nota il secondo argomento da fromjson (), che è int.classe.

Doppio

Considera il seguente codice all'interno del metodo principale ():

Gsongson = new gson ();
doppio db = 7.8;
Stringa str = gson.Tojson (DB);
doppio dbr = gson.dajson (str, doppio.classe);
Sistema.fuori.println (dbr);

L'output è 7.8. Nota il secondo argomento per Fromjson (), che è il doppio.classe.

CHAR

Considera il seguente codice all'interno del metodo principale ():

Gsongson = new gson ();
char ch = 'e';
Stringa str = gson.Tojson (Ch);
char chr = gson.dajson (str, char.classe);
Sistema.fuori.println (chr);

L'output è E. Nota il secondo argomento per Fromjson (), che è char.classe.

booleano

Considera il seguente codice all'interno del metodo principale ():

Gson gson = new gson ();
booleano bl = false;
Stringa str = gson.Tojson (BL);
booleano blr = gson.dajson (STR, booleano.classe);
Sistema.fuori.println (blr);

L'output è falso. Nota il secondo argomento per Fromjson (), che è booleano.classe.

nullo

Considera il seguente codice all'interno del metodo principale ():

Gson gson = new gson ();
String nl = null;
Stringa str = gson.Tojson (NL);
String nlr = gson.dajson (str, stringa.classe);
Sistema.fuori.println (NLR);

L'output è nullo. Nota il secondo argomento per Fromjson (), che è stringa.classe, per il tipo di null.

Vettore

Array Letterale

Considera il seguente codice:

Gson gson = new gson ();
Double [] dbs = 1.1, 2.2, 3.3, 4.4;
Stringa str = gson.Tojson (DBS);
doppio [] dbsr = gson.Dajson (STR, Double [].classe);
Sistema.fuori.println (dbsr [0]+""+dbsr [1]+""+dbsr [2]+""+dbsr [3]);

L'output è:

1.1 2.2 3.3 4.4

Dopo aver creato l'oggetto GSON, viene creato un doppio array Java. Successivamente, l'array letterale viene convertito in una corda JSON. Sì, sebbene il codice sia interessato a un array qui e non a un tipo primitivo, il metodo Tojson () viene ancora utilizzato e, di conseguenza, da JSON () verrà comunque utilizzato sul ricevitore. Il letterale dell'array stringa JSON è:

"[1.1, 2.2, 3.3, 4.4] "

Questa puntura è ciò che viene inserito nel flusso che viene trasmesso o salvato a livello locale. Il metodo fromjson () converte la stringa dell'array json letterale all'array Java (letterale) all'estremità ricevente.

Considera il seguente codice, che inizia con una serie di stringhe Java, in cui ogni stringa è un elemento su una tabella di lettura:

Gson gson = new gson ();
String [] strs = "penna", "libro di esercizi", null, "libro di testo";
Stringa str = gson.Tojson (STRS);
String [] STRSR = GSON.dajson (str, string [].classe);
Sistema.fuori.println (strsr [0]+","+strsr [1]+","+strsr [2]+","+strsr [3]);

L'output è:

Pen, libro di esercizi, null, libro di testo

Dopo aver creato l'oggetto GSON, viene creato un array di stringhe Java. Successivamente, l'array letterale viene convertito in una corda JSON. Il letterale dell'array stringa JSON è:

"[" penna "," libro di esercizi ", null," libro di testo "]"

Questa puntura è ciò che viene inserito nel flusso che viene trasmesso o salvato a livello locale. Il metodo fromjson () converte la stringa di array JSON Letterale di stringhe di ritorno all'array Java (letterale) all'estremità ricevente. Si noti che il tipo di classe (String []) è necessario per la conversione all'indietro.

Invio di array letterale con il nome dell'array

Il problema con lo schema sopra è che, a destinazione, è probabile che l'array venga dato un altro nome per il codice Java ricostruito. Il nome dell'array può essere inviato, come un array di singole parole, che precede l'array di interesse per risolvere questo problema. Il programma Java riceverà due array alla fine ricevente e li interpreterà in modo appropriato.

Oggetto

Contenuto dell'oggetto

Considera il seguente codice:

Importa com.Google.Gson.GSON;
Aclass di classe

int num = 10;
Stringa str1 = null;
Stringa str2;
String Str3 = "tre";
int mthd (int it)

restituirlo;

Inizia con l'importazione del pacchetto GSON e poi c'è la descrizione di una classe, chiamata ACLASS. La classe ha quattro campi (proprietà) e un metodo. Uno dei valori dei campi è nullo e un altro non ha alcun valore. Un codice adatto nella funzione principale () per questa classe è:

Gsongson = new gson ();
Aclass obj = new aclass ();
Stringa str = gson.Tojson (OBJ);
Aclassobjr = gson.dajson (str, aclass.classe);
Sistema.fuori.println (objr.num+","+objr.str1+","+objr.str2+","+objr.STR3);
int in = objr.MTHD (5);
Sistema.fuori.println (in);

L'output è costituito da due righe, che è:

10, null, null, tre
5

Dopo aver creato l'oggetto GSON, un altro oggetto, OBJ è istanziato dalla classe, ACLASS. Successivamente, l'array letterale viene convertito in una corda JSON. Sì, sebbene il codice sia preoccupato per un oggetto istanziato qui e non un tipo primitivo, il metodo Tojson () viene ancora utilizzato e, di conseguenza, da JSON () verrà comunque utilizzato sul ricevitore. La stringa di contenuto dell'oggetto JSON istanziate (classe) è così:

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

Nota le parentesi graffe delimitante anziché le staffe quadrate per differenziarle da JSON. È costituito da coppie chiave/valore. La chiave è separata dal suo valore con un colon. Le coppie sono separate l'una dall'altra dalle virgole.

Questo dovrebbe essere inserito nel flusso per la trasmissione o salvare localmente. In realtà, la stringa JSON per l'oggetto è:

"num": 10, "str3": "tre"

La coppia per il campo con valore null viene omessa. La coppia per il campo con il nome ma senza valore viene anche omessa. Il nome del metodo e la sua definizione sono anche omessi. Ciò significa che anche le informazioni sulla classe devono essere trasmesse. Questo può essere fatto con un precedente array JSON. Nulla è stato trasmesso nei campioni di codice di questo articolo, quindi le informazioni sulla classe sono ancora disponibili per essere utilizzate da JSON () .

Il metodo fromjson () converte la stringa dell'oggetto istanziato JSON su un oggetto Java all'estremità ricevente. Per avere lo stesso nome per l'oggetto, il nome dell'oggetto deve essere trasmesso (separatamente) all'estremità ricevente. Dopo che l'oggetto è stato ricreato all'estremità ricevente, è possibile accedere a campi e metodi (chiamati). Nel codice sopra, il metodo viene chiamato per provocare 5.

Conclusione

JSON è un formato serializzato. Gli oggetti Java possono essere serializzati in formato JSON per la trasmissione su un altro computer o per salvare localmente. All'altra estremità, la deserializzazione avviene per avere lo stesso oggetto che risiede alla fonte. La deserializzazione non ha luogo quando l'oggetto viene salvato. Non solo array e oggetti istanziati possono essere serializzati. Altri oggetti come mappe e raccolte possono essere serializzati e deserializzati. La libreria Java che può essere utilizzata per questi processi è la libreria GSON. Il suo metodo, Tojson () viene utilizzato per la serializzazione e il suo altro metodo, Fromjson (), viene utilizzato per la deserializzazione.