Android Gson 使用

你真的会用Gson吗?Gson使用指南(一) 这篇帖子写得尤为详细
Gson 中文指南 (非官方)
https://github.com/google/gson/blob/master/UserGuide.md (官方)

 public String toJson(Object src)
 public String toJson(JsonElement jsonElement)
 public  T fromJson(String json, Class classOfT)
 public  T fromJson(String json, Type typeOfT)

1. 基本用法

http://blog.csdn.net/lrenjun/article/details/7372003

Gson是google开发的json格式解析包,其特点是在解析json之前必须知道所传输的json数据格式,并定义一系列层次结构与json层次结构相同的类。

{  
 "name":"relin",  
 "sex":"male",  
 "age":26  
}  
class Person {  
 public String name;  
 public String sex;  
 public int age;  
}  
  • 如果预先定义的类中不包含json中的某个属性,则该属性就不会被解析出来,但是其他成员仍然能正常解析
  • 命名必须完全相同,否则不会被正常解析
  • 类的成员变量可以是public,也可以是private

a. json String to object

String str = "{\"name\":\"name0\",\"age\":0}";  
Gson gson = new Gson();  
Person person= gson.fromJson(str, Person.class); 

b. object to json String

Gson gson = new Gson();  
String str = gson.toJson(persons);

c. List、Map 与 json 的转化

http://blog.csdn.net/onlyonecoder/article/details/16907713

List 转化为 json 会转为数组;
Map 转化为 json 就是一个包含若干映射的对象。

Gson gson=new Gson();  
List rs=new ArrayList();  
Type type = new TypeToken>() {}.getType();  
rs=gson.fromJson(arrayJsonStr, type);  

Map persons = gson.fromJson(mapJsonStr, new TypeToken>() {}.getType());

2. @SerializedName 注解

http://blog.csdn.net/jiayi_yao/article/details/51057267

@SerializedName 允许我们在 json 中使用与 java 类中对应成员变量不同的名字。

class Person {  
    @SerializedName("name")
    public String mName = "";  
    public String sex;  
    public int age;  
}  

这样再使用Gson解析的时候就会将 name 对应的值赋值到 mName 属性上,同样的如果我们要使用 Gson 将 Person 生成 json 字符串的时候,也会将 mName 的名字生成 name 。这样就解决了java对象里属性名跟json里字段名不匹配的情况了。

当然,gson 中还有其他注解可以使用。JSON解析类库之Gson(3) --- Gson注解

3. 其他

http://blog.csdn.net/a249900679/article/details/51386509

new GsonBuilder().serializeNulls().disableHtmlEscaping().create();
new GsonBuilder().registerTypeAdapter(Id.class, new IdTypeAdapter())//自定义类型适配器  
new GsonBuilder().enableComplexMapKeySerialization()//Map类型  
new GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE)//会把字段首字母大写  
new GsonBuilder().setVersion(1.0)//自定义版本号  

你可能感兴趣的:(Android Gson 使用)