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

下一章:Gson流

Gson 流:Streaming API用于通过令牌读取 JSON 令牌。它将 JSON 内容读写为离散事件。 JsonReader 和 JsonWriter将数据读/写为令牌,称为 JsonToken 。它是处理 JSON 的三种方法中最 ...