Gson:一個解析和封裝json的框架
gradle的地址是:
compile group: 'com.google.code.gson', name: 'gson', version: ‘2.8.1'
相對於較爲傳統的Json解析來說,google共享的開源Gson在解析速度和所使用的內存在有着明顯的優勢,雖然說阿里巴巴也提供了fastgson包,但是它跟Gson的處理速度大同小異,只是底層實現的原理不同。這裏先說說Gson的使用吧!舉幾個例子說明:
Gson有兩個重要的方法,一個就是tojson,一個就是fromjson。
Person普通的Bean對象
User比較複雜的Bean對象,裏面加了對象和集合
Pseron
public class Person {
private String name;
private int age;
private String sex;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
----------------------------------------------
Userpublic class User {
private String name;
private int age;
private Person person;
private List<Person> list;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
public List<Person> getList() {
return list;
}
public void setList(List<Person> list) {
this.list = list;
}
}
1.普通的Bean對象轉json
void tojson1() {
Person person1 = new Person();
person1.setAge(25);
person1.setName("Ety");
person1.setSex("男");
Gson gson = new Gson();
String json = gson.toJson(person1);
Log.i(TAG, json);
//打印結果:{"age":25,"name":"Ety","sex":"男"}
}
2.List集合轉json
void tojson2() {
List<Person> list = new ArrayList<>();
Person person1 = new Person();
person1.setAge(25);
person1.setName("Ety");
person1.setSex("男");
Person person2 = new Person();
person1.setAge(23);
person1.setName("Ety");
person1.setSex("男");
list.add(person1);
list.add(person2);
Gson gson = new Gson();
String json = gson.toJson(list);
Log.i(TAG, json);
//打印結果:[{"age":23,"name":"Ety","sex":"男"},{"age":0}]
}
3.普通的json轉Bean
void outjson1() {
String json = "{\"age\":25,\"name\":\"Ety\",\"sex\":\"男\"}";
Gson gson = new Gson();
Person person = gson.fromJson(json, Person.class);
Log.i(TAG, person.getName());
}
4.數組類的json轉List集合
void outjson2() {
String json = "[{\"age\":23,\"name\":\"Ety\",\"sex\":\"男\"},{\"age\":0}]";
Gson gson = new Gson();
List<Person> list = gson.fromJson(json, List.class);
Log.i(TAG, "list.size:" + list.size());
//list.size:2
}
5.複雜的Bean對象轉json
//複雜版
void hard() {
User user = new User();
user.setName("ety");
user.setAge(25);
Person person = new Person();
person.setAge(1);
person.setName("Tom");
person.setSex("男");
Person person1 = new Person();
person1.setAge(2);
person1.setName("Ason");
person1.setSex("女");
user.setPerson(person);
List<Person> list = new ArrayList<>();
list.add(person);
list.add(person1);
user.setList(list);
Gson gson = new Gson();
String json = gson.toJson(user);
Log.i(TAG, json);
//打印結果:{"age":25,"list":[{"age":1,"name":"Tom","sex":"男"},{"age":2,"name":"Ason","sex":"女"}],"name":"ety","person":{"age":1,"name":"Tom","sex":"男"}}
}
6.複雜的json轉回bean對象
void hard2() {
String json = "{\"age\":25,\"list\":[{\"age\":1,\"name\":\"Tom\",\"sex\":\"男\"},{\"age\":2,\"name\":\"Ason\",\"sex\":\"女\"}],\"name\":\"ety\",\"person\":{\"age\":1,\"name\":\"Tom\",\"sex\":\"男\"}}";
Gson gson = new Gson();
User user = gson.fromJson(json, User.class);
Log.i(TAG, user.getName());
Log.i(TAG, user.getList().get(0).getName());
Log.i(TAG, user.getPerson().getName());
Log.i(TAG, user.getList().get(1).getName());
//MainActivity: ety
//MainActivity: Tom
//MainActivity: Tom
//MainActivity: Ason
}
總結:一句話,只要Bean對象能對上,什麼都能解晰和轉換。