您的位置:首页 > 编程语言 > Java开发

Gson使用方法之streaming

2014-09-19 22:01 190 查看

streaming

Gson提供流的方式来解析json字符串,当碰到装着不同类型对象的list时,可以应用这种方式来解析,抓取其中想要的内容

示例程序使用了顺序遍历方法,简单但是好用

public class ParseTokenTest {

public static void main(String[] args) throws MalformedURLException, IOException {
// TODO Auto-generated method stub
ParseTokenTest test = new ParseTokenTest();
String url = "http://freemusicarchive.org/api/get/albums.json?api_key=60BLHNQCAOUFPIBZ&limit=5";
String json = IOUtils.toString(new URL(url));
JsonReader reader = new JsonReader(new StringReader(json));
test.handleObject(reader);
}

public void handleObject(JsonReader reader) throws IOException {
reader.beginObject();
while (reader.hasNext()) {
JsonToken token = reader.peek();
if (token.equals(JsonToken.BEGIN_ARRAY)) {
handleArray(reader);
}
else if (token.equals(JsonToken.END_ARRAY)) {
reader.endObject();
return;
}
else {
handleNonArrayToken(reader, token);
}
}
}

public void handleArray(JsonReader reader) throws IOException {
reader.beginArray();
while (true) {
JsonToken token = reader.peek();
if (token.equals(JsonToken.END_ARRAY)) {
reader.endArray();
break;
} else if (token.equals(JsonToken.BEGIN_OBJECT)) {
handleObject(reader);
} else {
handleNonArrayToken(reader, token);
}
}
}
public void handleNonArrayToken(JsonReader reader, JsonToken token) throws IOException {
if (token.equals(JsonToken.NAME)) {
System.out.println(reader.nextName());
} else if (token.equals(JsonToken.STRING)) {
System.out.println(reader.nextString());
} else if (token.equals(JsonToken.NUMBER)) {
System.out.println(reader.nextDouble());
} else {
reader.skipValue();
}
}
}


参考资料:Java
Gson - parsing json to java token by token
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  gson java