黄色电影一区二区,韩国少妇自慰A片免费看,精品人妻少妇一级毛片免费蜜桃AV按摩师 ,超碰 香蕉

Gson 流

gson 流

streaming api用于通過令牌讀取 json 令牌。它將 json 內(nèi)容讀寫為離散事件。 jsonreader 和 jsonwriter 將數(shù)據(jù)讀/寫為令牌,稱為 jsontoken 。

它是處理 json 的三種方法中最強大的方法。它具有最低的開銷,并且在讀/寫操作中非常快。它類似于 xml 的 stax 解析器。

在本章中,我們將展示使用gson流api來讀取json數(shù)據(jù)。streaming api與token的概念一起使用,json的每個細節(jié)都要謹慎處理。

//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();
}

 

1. 范例

讓我們看看 jsonreader的運作 情況。在c:> gson_workspace中創(chuàng)建名為 gsontester 的java類文件。

文件: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() + " ");            
         }
      }
   }
}

 

2. 驗證結(jié)果

使用 javac 編譯器編譯類如下:

c:\gson_workspace>javac gsontester.java

現(xiàn)在運行 gsontester 查看結(jié)果:

c:\gson_workspace>java gsontester

驗證輸出。

name: mahesh kumar
age:21
verified:false
marks [ 100 90 85 ]

下一節(jié):gson 序列化示例

gson 教程

相關文章