Gson 樹模型
gson 樹模型
樹模型準備 json 文檔的內存樹表示。它構建了一個 jsonobject 節點樹。它是一種靈活的方法,類似于 xml 的 dom 解析器。
1. 從 json 創建樹
在讀取json之后,jsonparser提供指向樹的根節點的指針。根節點可用于遍歷完整的樹。請考慮以下代碼段以獲取提供的json字符串的根節點。
//create an jsonparser instance jsonparser parser = new jsonparser(); string jsonstring = "{\"name\":\"mahesh kumar\", \"age\":21,\"verified\":false,\"marks\": [100,90,85]}"; //create tree from json jsonelement rootnode = parser.parse(jsonstring);
2. 遍歷樹模型
在遍歷樹并處理數據時,使用到根節點的相對路徑獲取每個節點。以下代碼段顯示了如何遍歷樹。
jsonobject details = rootnode.getasjsonobject(); jsonelement namenode = details.get("name"); system.out.println("name: " +namenode.getasstring()); jsonelement agenode = details.get("age"); system.out.println("age: " + agenode.getasint());
3. 范例
在c:>gson_workspace中創建名為 gsontester 的java類文件。
文件:gsontester.java
import com.google.gson.jsonarray; import com.google.gson.jsonelement; import com.google.gson.jsonobject; import com.google.gson.jsonparser; import com.google.gson.jsonprimitive; public class gsontester { public static void main(string args[]) { string jsonstring = "{\"name\":\"mahesh kumar\", \"age\":21,\"verified\":false,\"marks\": [100,90,85]}"; jsonparser parser = new jsonparser(); jsonelement rootnode = parser.parse(jsonstring); if (rootnode.isjsonobject()) { jsonobject details = rootnode.getasjsonobject(); jsonelement namenode = details.get("name"); system.out.println("name: " +namenode.getasstring()); jsonelement agenode = details.get("age"); system.out.println("age: " + agenode.getasint()); jsonelement verifiednode = details.get("verified"); system.out.println("verified: " + (verifiednode.getasboolean() ? "yes":"no")); jsonarray marks = details.getasjsonarray("marks"); for (int i = 0; i < marks.size(); i++) { jsonprimitive value = marks.get(i).getasjsonprimitive(); system.out.print(value.getasint() + " "); } } } }
4. 驗證結果
使用 javac 編譯器編譯類如下:
c:\gson_workspace>javac gsontester.java
現在運行 gsontester 查看結果:
c:\gson_workspace>java gsontester
驗證輸出。
name: mahesh kumar age: 21 verified: no 100 90 85