Gson 的使用

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;
}

}

----------------------------------------------

User
public 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對象能對上,什麼都能解晰和轉換。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章