###这篇文章不剖析源码,不写每个方法的使用
###只写怎么在十分钟快速上手Gson
Gson 是google解析Json的一个开源框架,同类的框架fastJson,JackJson等等
我曾经写过一片如何使用FastJson
http://blog.csdn.net/github_36731706/article/details/54286818
接下来就写写如何简单的使用Gson,以下是我最常用到的几种情况(欢迎补充)
(Person) 对象转换成JSON字符串
List< Person >转换成JSON字符串
JSON字符串转换成(“{}”开头)对象
JSON字符串(“[]”开头)转换成List对象
我是使用的 Android Studio 在使用之前需要导包
compile 'com.google.code.gson:gson:2.6.2'
Person实体类,age,name,gender这几个简单的属性,get,set,还有toString方法
public class Person {
private int age;
private String name;
private String gender;
public Person(int age, String name, String gender) {
this.age = age;
this.name = name;
this.gender = gender;
}
//此处省略 get set 方法
........................
@Override
public String toString() {
return "age:"+age+",name:"+name+",gender:"+ gender;
}
}
不管是将一个对象转换成字符串也好还是将一个字符串转换成一个对象也好
第一件事创建Gson对象
Gson gson=new Gson();
Person对象转换成Json字符串
//对象转换成Json
Person person=new Person(20,"张三","男");
String perToJson=gson.toJson(person);
Log.d("TAG","perToJson:"+perToJson);
运行结果
List对象转换成Json字符串
personList=new ArrayList<>();
//为list添加数据
for(int i=0;i<5;i++){
Person p=new Person(i,"张三"+i,"男");
personList.add(p);
}
String listToJson=gson.toJson(personList);
Log.d("TAG","listToJson:"+listToJson);
由上可以看出
一个对象转成Json字符串是调用的
gson.toJson(Obj obj);
详细的接收参数
Json字符串转换成Person对象
这里用到的字符串数据是从上面的运行结果直接拷贝过来的
//Json转成Person
String jsonToObj="{\"name\":\"张三\",\"gender\":\"男\",\"age\":20}";
Person jsonPerson=gson.fromJson(jsonToObj,Person.class);
Log.d("TAG","jsonPerson:"+jsonPerson.toString());
Json字符串转换成List对象
String listJson="[{\"name\":\"张三0\",\"gender\":\"男\",\"age\":0},{\"name\":\"张三1\",\"gende" +
"r\":\"男\",\"age\":1},{\"name\":\"张三2\",\"gender\":\"男\",\"age\":2},{\"name\":\"张三3\",\"gender\":\"男\",\"age\":3},{\"name\":\"张三4\",\"gender\":\"男\",\"age\":4}]";
Type type = new TypeToken<ArrayList<Person>>() {
}.getType();
List<Person> jsonToList= gson.fromJson(listJson,type);
for (Person b:jsonToList){
Log.d("TAG","jsonToList"+b.toString());
}
详细的接收参数
一个Json字符串转换成对象是调用
gson.fromJson(str,obj.class/type);
如果是实体类则传入xxx.class,如果是list则先要创建Type对象,然后第二个参数传入Type对象
type对象的创建
Type type = new TypeToken<ArrayList<Person>>() {
}.getType();
详细的Gson使用请见
http://blog.csdn.net/axuanqq/article/details/51441590
结束 !