GSON学习笔记
2016-05-22 10:33
225 查看
在Android开发中,我们Android客户端如果要和服务器端交互,一般都会采用json数据格式进行交互,json对于大家来说都不陌生,本文讲述一下关于gson,gson和其他现有java json类库最大的不同时gson需要序列化得实体类不需要使用annotation来标识需要序列化得字段,同时gson又可以通过使用annotation来灵活配置需要序列化的字段。
举一个简单的例子:
一个实体类 Person.java,参考代码如下:
1 public class Person {
2 private String name;
3 private int age;
4 public String getName() {
5 return name;
6 }
7 public void setName(String name) {
8 this.name = name;
9 }
10 public int getAge() {
11 return age;
12 }
13 public void setAge(int age) {
14 this.age = age;
15 }
16 @Override
17 public String toString()
18 {
19 return name + ":" +age;
20 }
21 }
我们给这个类赋值,看看如何使用gson如何使用:
1.gson生成Json字符串
1 Gson gson = new Gson();//实例化gson
2 List<Person> persons = new ArrayList<Person>();
3 for (int i = 0; i < 10; i++) {
4 Person p = new Person();
5 p.setName("name" + i);
6 p.setAge(i * 5);
7 persons.add(p);
8 }
9 String str = gson.toJson(persons);//转换json
说明:上面代码主要说明gson的使用,它提供了toJason()方法将对象转换成Json字符串,转换出来就是很标准的json字符串.
2.gson如何将json字符串转换成java实体类
Gson提供了fromJson()方法来实现从Json相关对象到java实体的方法。
日常应用中,我们一般都会碰到两种情况,转成单一实体对象和转换成对象列表或者其他结构。
1)转换单一java实体如何实现
比如json字符串为:[{"name":"张三","age":20}],那么转换方式如下:
1 Person person = gson.fromJson(str, Person.class);
2)转换成列表类型
如果一个类中只有一个属性,并且这个属性是一个集合。如下:
public class DeviceInMapData implements Serializable{
public ArrayList<DeviceInfo>
deviceInfos;
public class DeviceInfo{
String
id;
float longitude;
float latitude;
Boolean
isWran;
int spdStatus;
float lightningValue;
}
}
则不能使用上面第一种解析方式。会报json解析语法错误。只有使用下面这种方式。
比如json字符串为:[{"name":"张三","age":20},{"name":"李四","age":15},{"name":"王五","age":21}]
1 List<Person> ps = gson.fromJson(str, new TypeToken<List<Person>>(){}.getType());
2 for(int i = 0; i < ps.size() ; i++)
3 {
4 Person p = ps.get(i);
5 System.out.println(p.toString());
6 }
说明:上面的代码使用了TypeToken,它是gson提供的数据类型转换器,可以支持各种数据集合类型转换。
举一个简单的例子:
一个实体类 Person.java,参考代码如下:
1 public class Person {
2 private String name;
3 private int age;
4 public String getName() {
5 return name;
6 }
7 public void setName(String name) {
8 this.name = name;
9 }
10 public int getAge() {
11 return age;
12 }
13 public void setAge(int age) {
14 this.age = age;
15 }
16 @Override
17 public String toString()
18 {
19 return name + ":" +age;
20 }
21 }
我们给这个类赋值,看看如何使用gson如何使用:
1.gson生成Json字符串
1 Gson gson = new Gson();//实例化gson
2 List<Person> persons = new ArrayList<Person>();
3 for (int i = 0; i < 10; i++) {
4 Person p = new Person();
5 p.setName("name" + i);
6 p.setAge(i * 5);
7 persons.add(p);
8 }
9 String str = gson.toJson(persons);//转换json
说明:上面代码主要说明gson的使用,它提供了toJason()方法将对象转换成Json字符串,转换出来就是很标准的json字符串.
2.gson如何将json字符串转换成java实体类
Gson提供了fromJson()方法来实现从Json相关对象到java实体的方法。
日常应用中,我们一般都会碰到两种情况,转成单一实体对象和转换成对象列表或者其他结构。
1)转换单一java实体如何实现
比如json字符串为:[{"name":"张三","age":20}],那么转换方式如下:
1 Person person = gson.fromJson(str, Person.class);
2)转换成列表类型
如果一个类中只有一个属性,并且这个属性是一个集合。如下:
public class DeviceInMapData implements Serializable{
public ArrayList<DeviceInfo>
deviceInfos;
public class DeviceInfo{
String
id;
float longitude;
float latitude;
Boolean
isWran;
int spdStatus;
float lightningValue;
}
}
则不能使用上面第一种解析方式。会报json解析语法错误。只有使用下面这种方式。
比如json字符串为:[{"name":"张三","age":20},{"name":"李四","age":15},{"name":"王五","age":21}]
1 List<Person> ps = gson.fromJson(str, new TypeToken<List<Person>>(){}.getType());
2 for(int i = 0; i < ps.size() ; i++)
3 {
4 Person p = ps.get(i);
5 System.out.println(p.toString());
6 }
说明:上面的代码使用了TypeToken,它是gson提供的数据类型转换器,可以支持各种数据集合类型转换。
相关文章推荐
- Programming Scala 第6章 demo06
- Fragment
- 树莓派3无屏幕折腾#附带uart问题解决方案
- android开发-tabhost实现分页
- 【JZOJ 3401】Pty爬山
- 计算机病毒实践总结二:简单动态分析
- Spring MVC学习笔记——JSR303介绍及最佳实践
- 构建之法阅读笔记05
- Node.js 文件系统
- FZU NO.2150 Fire Game(枚举+BFS)
- OBIEE编辑报表比率向下取整问题
- java二维码qrcode生成代码下载,进行加密,解密,相对于最代码xiaoxiaot的更为简便
- java中字节数组与其他各类型的转换
- 卡方检验用于特征提取
- 图像算法研究---索引图像旋转缩放锯齿问题
- sparl ML使用TFIDF
- maven仓库--私服(Nexus的配置使用)
- ActivityManager: Warning: Activity not started, its current task has been brought to the front 的的问题
- ceph系统原理 细节 benchmark 不完全说明
- https 讲解