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对象能对上,什么都能解晰和转换。


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值