Gson-JSON树模型

Gson可以把JSON数据在内存中构建成为一个叫JsonObject的树模型对象。这是一种灵活的方法,类似于XML的DOM解析器。

1 创建JSON树模型

JsonParser在读取JSON数据后提供指向树的根节点。根节点可用于遍历整个树。以下代码,用于获取JSON字符串的根节点。

//创建JsonParser对象
JsonParser parser = new JsonParser(); 

String jsonString = 
"{\"name\":\"eric\", \"age\":21,\"verified\":false,\"marks\": [100,90,85]}"; 

//创建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 遍历树模型的示例

3.1 编写核心类

MainApp:

package com.yiidian.gson;

import com.google.gson.*;

/**
 * 一点教程网 - http://www.yiidian.com
 */
public class MainApp {

    public static void main(String args[]) {

        String jsonString =
                "{\"name\":\"eric\", \"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() + " ");
            }
        }
    }
}

3.2 运行测试

热门文章

优秀文章