有时,json字符串存储在一个文件中,Gson中提供了JsonReader来处理此种情况,只需要为json文件创建一个字符流对象,并把改字符流对象传给JsonReader即可。(推荐用2.1中JsonParser解析json)
例如在“e:/user.json”文件中有如下内容
{
"id" : "2",
"name" : "lzj",
"age" : "25",
"cars" : ["aodi", "baoma", "bendi"]
}
下面开始解析
public static void main(String[] args){
FileReader reader = null;
try {
reader = new FileReader("e:/user.json");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
/*从字符流中解析json*/
JsonReader jsonReader = new JsonReader(reader);
try {
/*开始解析json为object对象*/
jsonReader.beginObject();
while(jsonReader.hasNext()){
String tag = jsonReader.nextName();
if (tag.equals("id")) {
int id = jsonReader.nextInt();
System.out.println("id : " + id);
}
else if (tag.equals("name")) {
String name = jsonReader.nextString();
System.out.println("name : " + name);
}
else if (tag.equals("age")) {
Integer age = jsonReader.nextInt();
System.out.println("age : " + age);
}
else if (tag.equals("cars")) {
/*开始解析cars中数组*/
jsonReader.beginArray();
int i = 0;
while(jsonReader.hasNext()){
System.out.println("car" + (++i) + " : " + jsonReader.nextString());
}
jsonReader.endArray();
}
}
jsonReader.endObject();
jsonReader.close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
运行程序,输出结果如下
id : 2
name : lzj
age : 25
car1 : aodi
car2 : baoma
car3 : bendi