- Gson教程
- Gson - 首页
- Gson - 概述
- Gson - 环境设置
- Gson - 第一个应用程序
- Gson - 类
- Gson - 对象序列化
- Gson - 数据绑定
- Gson - 对象数据绑定
- Gson - 树模型
- Gson - 流
- Gson - 序列化示例
- Gson - 序列化内部类
- Gson - 自定义类型适配器
- Gson - 空对象支持
- Gson - 版本控制支持
- 从序列化中排除字段
- Gson 有用资源
- Gson - 快速指南
- Gson - 有用资源
- Gson - 讨论
Gson - 树模型
树模型会准备 JSON 文档的内存中树表示形式。它构建了一个 JsonObject 节点树。这是一种灵活的方法,类似于 XML 的 DOM 解析器。
从 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);
遍历树模型
遍历树时,使用相对于根节点的相对路径获取每个节点并处理该数据。以下代码片段展示了如何遍历树。
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());
示例
在 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() + " ");
}
}
}
}
验证结果
使用 **javac** 编译器编译类,如下所示:
C:\GSON_WORKSPACE>javac GsonTester.java
现在,运行 **GsonTester** 以查看结果:
C:\GSON_WORKSPACE>java GsonTester
验证输出。
Name: Mahesh Kumar Age: 21 Verified: No 100 90 85
广告