1. 程式人生 > >Json物件的對寫(Jackson使用)

Json物件的對寫(Jackson使用)

Jackson 是一個 Java 用來處理 JSON 格式資料的類庫,效能非常好。以下是通過一些例子來了解如何使用Jackson來寫或讀json。

寫json資料到響應的文字中。

[java] view plain copy print?
  1. publicvoid createJsonObject() throws Exception{  
  2.         JsonFactory jsonFactory = new JsonFactory(); //建立json工廠,主要用來建立json生成器,json解析器的工具
  3.         JsonGenerator jsonGenerator   
  4.                  = jsonFactory.createJsonGenerator(new File("D:/test.json"), JsonEncoding.UTF8); //建立json生成器
  5.         jsonGenerator.writeStartObject();//開始寫入json格式的字串此語句相當於:"{"
  6.         jsonGenerator.writeFieldName("name");//相當於key為"name"
  7.         jsonGenerator.writeString("Nacey");//相當於value為"Nacey"
  8.         jsonGenerator.writeStringField("sex"
    "male"); //方法同上//"sex":"male"
  9.         jsonGenerator.writeArrayFieldStart("Address"); //建立一個數組類似:Address:[
  10.         jsonGenerator.writeString("tel");  
  11.         jsonGenerator.writeString("1555122120");  
  12.         jsonGenerator.writeEndArray();  
  13.         jsonGenerator.writeEndObject();//結束json物件
  14.         jsonGenerator.close();  
  15.     }</span>  
輸出結果:{"name":"Nacey","sex":"male","Address":["tel","1555122120"]}

Jackson處理JSON非常簡單,但要了解JSON文字的格式,這樣就可以遍歷了,也就可以很方便的讀出來了。

[java] view plain copy print?
  1. publicvoid parseJsonObject() throws Exception{  
  2.         JsonFactory jsonFactory = new JsonFactory(); //建立json工廠,主要用來建立json生成器,json解析器的工具
  3.         /** 
  4.          * 解析器是用於標記JSON內容到令牌和相關資料的物件。這是最低階的JSON內容的讀訪問。 
  5.          */
  6.         JsonParser jsonParse = jsonFactory.createJsonParser(new File("D:/test.json"));  
  7.          //迴圈判斷下一個令牌是否到結束令牌
  8.         while(jsonParse.nextToken() != JsonToken.END_OBJECT){  
  9.             String fieldName = jsonParse.getCurrentName();  
  10.             if("name".equals(fieldName)){  
  11.                 jsonParse.nextToken();  
  12.                 System.out.println(jsonParse.getText());  
  13.             }  
  14.             if("sex".equals(fieldName)){  
  15.                 jsonParse.nextToken();  
  16.                 System.out.println(jsonParse.getText());  
  17.             }  
  18.             if("Address".equals(fieldName)){ //陣列判斷有沒有到陣列結束位置
  19.                 jsonParse.nextToken();  
  20.                  while (jsonParse.nextToken() != JsonToken.END_ARRAY) {    
  21.                     System.out.println(jsonParse.getText());     
  22.                  }    
  23.             }  
  24.         }  
  25.         jsonParse.close();  
  26.     }  

輸出結果:Nacey
male
tel
1555122120