Gson 解析使用总结

1.Gson 解析总结,就两种情况

Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库。可以将一个 JSON 字符串转成一个 Java 对象,或者将 Java 对象转成一个 JSON 字符串。
使用 Gson 来解析时,总结一下,就两句话:

  • 1. 遇到 “{” 字符,表示单个对象,直接用 XXXBean.class 类去映射
  • 2. 遇到 “[” 字符,表示对象数组,要用 XXXBean[].class 或 list 去映射

2. 第一种情况,举例

  • json 字符串是:
{
"items": [
{
"key": "H60-L12__1464938219953__346589_483",
"hash": "Fip_In4BhB5syoZ28W3l_eb6rBDU",
"fsize": 348120,
"mimeType": "image/jpeg",
"putTime": 14649382507765902
},
{
"key": "H60-L12__1465352164202__397253_2946",
"hash": "Fs-UwiosdckN9kVY01GrOYC-b7a9",
"fsize": 938413,
"mimeType": "image/jpeg",
"putTime": 14653521712332144
},
{
"key": "H60-L12__1465352548728__322577_4114",
"hash": "Frga_QiMJVb9caiuwMlJABCsu1rc",
"fsize": 506921,
"mimeType": "image/jpeg",
"putTime": 14653525989907168
}
]
}
  • 分析

最开始是一个 “{” 字符,所以需要用 gson.fromJson(jsonstring, XXXBean.class)来解析。同时,XXXBean 中只有一个字段 items。
items 里面是一个 “[” 字符,表示 items 里面是数组,可以用 list 去映射。

  • 解析时,

最后对应的 Gson 对象就是:

public class XXXBean {

public List<XXXItem> items;

public List<XXXItem> getItems() {
return items;
}

public void setItems(List<XXXItem> items) {
this.items = items;
}

public static class XXXItem {
private String key;
private String hash;
private String fsize;
private String mimeType;
private String putTime;

...
}
}

Gson gson = new Gson();
List<XXXBean.XXXItem> list = gson.fromJson(jsonstring,XXXBean.class).getItems();

3. 第二种情况,举例

json 字符串以 “[” 开头。

例如,json==[{“id”:1,”name”:” 李坤”,”birthDay”:”Jun 22, 2012 8:28:52 AM”},{“id”:2,”name”:” 曹贵生”,”birthDay”:”Jun 22, 2012 8:28:52 AM”},{“id”:3,”name”:” 柳波”,”birthDay”:”Jun 22, 2012 8:28:52 AM”}]

  • 解析时,需要使用 list 来接收。
List<Student> retList = gson.fromJson(jsonstring2,  new TypeToken<List<Student>>(){}.getType());
  • 也可以这样
Student[] students= gson.fromJson(jsonstring2,new Student[].class);
  • 对应 list 为什么要使用 TypeToken?

    TypeToken 是 Gson 提供的,来实现对泛型的支持



本文采用知识共享署名 2.5 中国大陆许可协议进行许可,欢迎转载,但转载请注明来自 Agehua’s Blog,并保持转载后文章内容的完整。本人保留所有版权相关权利。

本文链接:http://agehua.github.io/2016/06/08/gson-summary/

Share Comments
Loading comments...