把Gson作为我们的JSON解析库,如何应用到我们的程序中呢?之需要引入Gson的jar包即可:
下载地址:http://code.google.com/p/google-gson/
Code Docs:http://google-gson.googlecode.com/svn/trunk/gson/docs/javadocs/index.html
使用方法:
一、对象-->JSON
假如我们有一个类Person:
public class Person {
public long id;
public String name;
public boolean isMale;
public String avatar;
}
通过一个Gson实例:
Gson gson = new Gson();
我们可以直接将一个Person实例转换成Json字符串:
Person person = new Person();
person.id= 111;
person.name= "张三";
person.isMale= true;
person.avatar= "http://aaaaaaaaa";
String jsonStr = gson.toJson(person);
Log.v("=============", jsonStr);
即使是List和Map也可以(以List为例):
ArrayList<Person> list = new ArrayList<Person>();
Person person = new Person();
person.id= 111;
person.name= "张三";
person.isMale= true;
person.avatar= "http://aaaaaaaaa";
list.add(person);
person = new Person();
ArrayList<Person> list = new ArrayList<Person>();person.id= 222;
person.name= "李四";
person.isMale= false;
person.avatar= "http://bbbbbbbbb";
list.add(person);
String jsonStr = gson.toJson(list);
Log.v("=============", list);
二、JSON-->对象
反过来如何解序列化呢(也就是解析JSON)?
还是先以Person对象为例:
private final String JSON_STR = "{\"avatar\":\"http://aaaaaaaaa\",\"name\":\"博张三\",\"id\":111,\"isMale\":true}";
Person person = gson.fromJson(JSON_STR, Person.class);
没错,就是如此简单,如果是List或者Map也同样简单(同样以List为例):
private final String JSON_STR= "[{\"avatar\":\"http://aaaaaaaaa\",\"name\":\"张三\",\"id\":111,\"isMale\":true},{\"avatar\":\"http://bbbbbbbbb\",\"name\":\"李四\",\"id\":222,\"isMale\":false}]";
Type listType = newTypeToken<List<Person>>(){}.getType();
list = gson.fromJson(JSON_STR, listType);
恩,使用起来确实比拿到JSONObject然后一层一层、一个一个去get要方便很多,不过我也是刚刚接触,正在摸索学习中,如果大家遇到问题也可以提出来一块研究。