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