Gson - Streaming
Streaming API digunakan untuk membaca token JSON dengan token. Itu membaca dan menulis konten JSON sebagai peristiwa diskrit.JsonReader dan JsonWriter membaca / menulis data sebagai token, disebut JsonToken.
Ini adalah pendekatan paling kuat di antara tiga pendekatan untuk memproses JSON. Ini memiliki overhead terendah dan cukup cepat dalam operasi baca / tulis. Ini analog dengan parser Stax untuk XML.
Dalam bab ini, kami akan menunjukkan penggunaan API streaming GSON untuk membaca data JSON. Streaming API bekerja dengan konsep token dan setiap detail Json harus ditangani dengan hati-hati.
//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();
}
Contoh
Ayo lihat JsonReadersedang beraksi. Buat file kelas Java bernamaGsonTester di C: \> GSON_WORKSPACE.
File - 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() + " ");
}
}
}
}
Verifikasi hasilnya
Kompilasi kelas menggunakan javac kompiler sebagai berikut -
C:\GSON_WORKSPACE>javac GsonTester.java
Sekarang jalankan GsonTester untuk melihat hasilnya -
C:\GSON_WORKSPACE>java GsonTester
Verifikasi hasilnya.
Name: Mahesh Kumar
Age:21
Verified:false
Marks [ 100 90 85 ]