Gson-스트리밍

스트리밍 API는 토큰별로 JSON 토큰을 읽는 데 사용됩니다. JSON 콘텐츠를 개별 이벤트로 읽고 씁니다.JsonReaderJsonWriter 데이터를 토큰으로 읽고 / 씁니다. 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 ]