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 ]