原文地址:http://www.studytrails.com/java/json/java-google-json-parse-json-to-java-tree.jsp
在之前的教程中,我们看到怎样将一段json字符串转换成Java对象.在这节中,我们将把json转换成树结构的JsonElement.遍历这个树对象可以生成对应的java对象.JsonElement这个类有isJsonObject(),isJsonNull()等这些用来判断JsonElement的方法.有getAsJsonObject(),getAsJsonPrimitive()等获取实际对象的方法.接下来,我们将解析从free music
archiver返回的json,代码如下:
package com.studytrails.json.gson;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import org.apache.commons.io.IOUtils;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
public class ParseTreeExample6 {
public static void main(String[] args) throws MalformedURLException, IOException {
String url = "http://freemusicarchive.org/api/get/albums.json?api_key=60BLHNQCAOUFPIBZ&limit=5";
String json = IOUtils.toString(new URL(url));
JsonParser parser = new JsonParser();
// The JsonElement is the root node. It can be an object, array, null or
// java primitive.
JsonElement element = parser.parse(json);
// use the isxxx methods to find out the type of jsonelement. In our
// example we know that the root object is the Albums object and
// contains an array of dataset objects
if (element.isJsonObject()) {
JsonObject albums = element.getAsJsonObject();
System.out.println(albums.get("title").getAsString());
JsonArray datasets = albums.getAsJsonArray("dataset");
for (int i = 0; i < datasets.size(); i++) {
JsonObject dataset = datasets.get(i).getAsJsonObject();
System.out.println(dataset.get("album_title").getAsString());
}
}
}
}