170
技術社區[雲棲]
Android應用開發之(Gson的使用)
把Gson作為我們的JSON解析庫,如何應用到我們的程序中呢?之需要引入Gson的jar包即可:
下載地址:https://code.google.com/p/google-gson/
Code Docs:https://google-gson.googlecode.com/svn/trunk/gson/docs/javadocs/index.html
使用方法:
一、對象-->JSON
假如我們有一個類Person:
public class Person {
public long id;
public String name;
public boolean isMale;
public String avatar;
}
通過一個Gson實例:
Gson gson = new Gson();
我們可以直接將一個Person實例轉換成Json字符串:
Person person = new Person();
person.id= 111;
person.name= "張三";
person.isMale= true;
person.avatar= "https://aaaaaaaaa";
String jsonStr = gson.toJson(person);
Log.v("=============", jsonStr);
即使是List和Map也可以(以List為例):
ArrayList<Person> list = new ArrayList<Person>();
Person person = new Person();
person.id= 111;
person.name= "張三";
person.isMale= true;
person.avatar= "https://aaaaaaaaa";
list.add(person);
person = new Person();
ArrayList<Person> list = new ArrayList<Person>();person.id= 222;
person.name= "李四";
person.isMale= false;
person.avatar= "https://bbbbbbbbb";
list.add(person);
String jsonStr = gson.toJson(list);
Log.v("=============", list);
二、JSON-->對象
反過來如何解序列化呢(也就是解析JSON)?
還是先以Person對象為例:
private final String JSON_STR = "{\"avatar\":\"https://aaaaaaaaa\",\"name\":\"博張三\",\"id\":111,\"isMale\":true}";
Person person = gson.fromJson(JSON_STR, Person.class);
沒錯,就是如此簡單,如果是List或者Map也同樣簡單(同樣以List為例):
private final String JSON_STR= "[{\"avatar\":\"https://aaaaaaaaa\",\"name\":\"張三\",\"id\":111,\"isMale\":true},{\"avatar\":\"https://bbbbbbbbb\",\"name\":\"李四\",\"id\":222,\"isMale\":false}]";
Type listType = newTypeToken<List<Person>>(){}.getType();
list = gson.fromJson(JSON_STR, listType);
恩,使用起來確實比拿到JSONObject然後一層一層、一個一個去get要方便很多,不過我也是剛剛接觸,正在摸索學習中,如果大家遇到問題也可以提出來一塊研究。
最後更新:2017-04-02 16:47:42