Gson-스트리밍
스트리밍 API는 토큰별로 JSON 토큰을 읽는 데 사용됩니다. JSON 콘텐츠를 개별 이벤트로 읽고 씁니다.JsonReader 과 JsonWriter 데이터를 토큰으로 읽고 / 씁니다. JsonToken.
JSON을 처리하는 세 가지 접근 방식 중 가장 강력한 접근 방식입니다. 오버 헤드가 가장 낮으며 읽기 / 쓰기 작업이 매우 빠릅니다. XML 용 Stax 파서와 유사합니다.
이 장에서는 JSON 데이터를 읽기 위해 GSON 스트리밍 API를 사용하는 방법을 보여줍니다. 스트리밍 API는 토큰 개념으로 작동하며 Json의 모든 세부 사항은 신중하게 처리해야합니다.
//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();
}
예
보자 JsonReader행동. 다음과 같은 Java 클래스 파일을 만듭니다.GsonTester C : \> GSON_WORKSPACE.
파일-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() + " ");
}
}
}
}
결과 확인
다음을 사용하여 클래스 컴파일 javac 다음과 같이 컴파일러-
C:\GSON_WORKSPACE>javac GsonTester.java
이제 실행 GsonTester 결과를 보려면-
C:\GSON_WORKSPACE>java GsonTester
출력을 확인하십시오.
Name: Mahesh Kumar
Age:21
Verified:false
Marks [ 100 90 85 ]