Gson - Streaming
L'API de streaming est utilisée pour lire le jeton JSON par jeton. Il lit et écrit le contenu JSON sous forme d'événements discrets.JsonReader et JsonWriter lire / écrire les données sous forme de jeton, appelé JsonToken.
C'est l'approche la plus puissante parmi les trois approches pour traiter JSON. Il a la plus faible surcharge et il est assez rapide dans les opérations de lecture / écriture. Il est analogue à l'analyseur Stax pour XML.
Dans ce chapitre, nous présenterons l'utilisation des API de streaming GSON pour lire les données JSON. L'API de streaming fonctionne avec le concept de jeton et tous les détails de Json doivent être traités avec soin.
//create JsonReader object and pass it the json source or json text.
JsonReader reader = new JsonReader(new StringReader(jsonString));
//start reading json
reader.beginObject();
//get the next token
JsonToken token = reader.peek();
//check the type of the token
if (token.equals(JsonToken.NAME)) {
//get the current token
fieldname = reader.nextName();
}
Exemple
Voyons voir JsonReaderen action. Créez un fichier de classe Java nomméGsonTester dans C: \> GSON_WORKSPACE.
Fichier - GsonTester.java
import java.io.IOException;
import java.io.StringReader;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonToken;
public class GsonTester {
public static void main(String args[]) {
String jsonString =
"{\"name\":\"Mahesh Kumar\", \"age\":21,\"verified\":false,\"marks\": [100,90,85]}";
JsonReader reader = new JsonReader(new StringReader(jsonString));
try {
handleJsonObject(reader);
}
catch (IOException e) {
e.printStackTrace();
}
}
private static void handleJsonObject(JsonReader reader) throws IOException {
reader.beginObject();
String fieldname = null;
while (reader.hasNext()) {
JsonToken token = reader.peek();
if (token.equals(JsonToken.BEGIN_ARRAY)) {
System.out.print("Marks [ ");
handleJsonArray(reader);
System.out.print("]");
} else if (token.equals(JsonToken.END_OBJECT)) {
reader.endObject();
return;
} else {
if (token.equals(JsonToken.NAME)) {
//get the current token
fieldname = reader.nextName();
}
if ("name".equals(fieldname)) {
//move to next token
token = reader.peek();
System.out.println("Name: "+reader.nextString());
}
if("age".equals(fieldname)) {
//move to next token
token = reader.peek();
System.out.println("Age:" + reader.nextInt());
}
if("verified".equals(fieldname)) {
//move to next token
token = reader.peek();
System.out.println("Verified:" + reader.nextBoolean());
}
}
}
}
private static void handleJsonArray(JsonReader reader) throws IOException {
reader.beginArray();
String fieldname = null;
while (true) {
JsonToken token = reader.peek();
if (token.equals(JsonToken.END_ARRAY)) {
reader.endArray();
break;
} else if (token.equals(JsonToken.BEGIN_OBJECT)) {
handleJsonObject(reader);
} else if (token.equals(JsonToken.END_OBJECT)) {
reader.endObject();
} else {
System.out.print(reader.nextInt() + " ");
}
}
}
}
Vérifier le résultat
Compilez les classes en utilisant javac compilateur comme suit -
C:\GSON_WORKSPACE>javac GsonTester.java
Maintenant, exécutez le GsonTester pour voir le résultat -
C:\GSON_WORKSPACE>java GsonTester
Vérifiez la sortie.
Name: Mahesh Kumar
Age:21
Verified:false
Marks [ 100 90 85 ]