关于GSON(一)

【写在前面】

第一次接触JSON并不是在老师的课堂上 而是在期末实训的时候在做很多异步处理时 真的是需要用到JSON。毕竟JSON势必比XML可读性强 且方便使用。当时我是向一位师兄请教,后来他就给我介绍了 GSON,这个由google开发的JAVA API ,用于java对象和json之间的相互转换。

【简介】

json是一种文本形式的数据交换格式,常用于前端和后代进行数据交换。(spring4mvc则不需要考虑如何转换json对象,因为注解@ResponseBody下面的那个方法返回的对象就是可以直接转换为json格式,不需要我们用第三方插件,这都是后话了)

【概要】

<1>最常用的java API莫过于jackson, JSON-JAVA以及本文章介绍的GSON类库。

<2>本章节内容大纲:

1.Gson基本用法;

2.Gson中使用泛型

【工具包】

下载gson-2.3.1.jar包,放在Eclipse的WEB-INF下的lib目录。

【正文】

一.GSON基本用法

二.Gson中使用泛型(常用)


===============================================================================================================================

一  GSON基本用法

Gson提供fromJson()和toJson()两种直接用与解析和生成方法。前者实现反序列化,则是将Json格式的数据转换为对象,后者则实现序列化,将对象转换为Json格式。

常用的方法有五个


1.基本数据类型

Gson gson=new Gson();

//整型

int i=gson.fromJson("100",int.class);

//双精度浮点型

double d=gson.from("\"99.99"\".double.class);

//布尔类型

boolean b=gson.fromJson("true",boolean.class);

//字符串类型

String str=gson.fromJson("String",String.class);



2.基本数据类型生成

Gson gson=new Gson();

String jsonNum=gson.toJson(100);

String jsonBoo=gson.toJson(true);

String jsonStr=gson.toJson("str");


3.POJO类(Plain Ordinary Java  Obeject,普通的java对象,可以理解为普通的javabean.与一般的javabean不同,POJO类只能拿来装数据,而javabean中除了数据还可以有方法,比如最常用的get set方法)


public class Student{

public String name;

public int age;'

public String school;

}


//解析对象,转换为Json格式

Gson gson=new Gson();

Student student=new Student("Carmen仔",18);

String jsonObject=gson.toJson(student);

//最后就会以{"name":"Carmen仔","age":18}


//解析Json

Gson gson=new Gson();

String jsonStr="{\"name\":\"age\""18}";

Student student=gson.fromJson(JsonString.Student.class);


二 GSON中使用泛型


1.

//字符串'数组

    ["JAVA","Android","JavaScript"]

当我们要通过GSON解析这个JSON的时候,一般有两种方法,使用数组或者是使用List。了解集合的孩子们都知道,List便于增删,所以一般都是使用List来解析Json


Gson gson=new Gson();

String jsonArr="[\JAVA"\,\"Android\",\"JavaScript\"]";

String[] strs=gson.fromJson(jsonArr,String.class);

String.class是不可以直接改为List<String>.class。我查阅过相关资料,解释。。虽然我还是不是很懂,但是我还是先贴出来吧- -。

上面的解释是这样的:对于JAVA而言,List<String>和List<Student>这两个字节码文件只一个那就是LIst.class,这是Java泛型使用时要注意的问题 泛型擦除。

(看到的孩子 不知道你懂不懂 反正 我 还是不懂)

反正解决方法就是用Gson提供的TypeToken类,它实现了对泛型的支持。

要转换成List<String>,则需要这样写

Gson gson=new Gson();

String jsonArr="[\JAVA"\,\"Android\",\"JavaScript\"]";

String[] strs=gson.fromJson(jsonArr,String.class);

List<String> strList=gson.fromJson(jsonArr,new TypeToken<List<String>>(){}.getType());


对于上面为什么要有一个大括号我是不懂的,上网查了一下,还是不懂= =:

TypeToken的构造方法为producted关键字所修饰,所以上面要写成new  TypeToken<List<String>>(){}.getType而不是new TypeToken<List<String>>().getType();


2. GSON中支持泛型对实现POJO接口的影响

可以避免要重复写一些不必要的代码


如果不支持泛型

public class Response{

public int  code;

public String message;

public User data;

}


支持泛型

public class Response<T>{

public int code;

public String message'

public T data;

}

当data字段是User时,那就是 Response <User> ,列表的话,就是Response<List<User>>


好了,第一部分就先写到这里了。下一部分会介绍一下GsonBuilder()的作用及GSON的一些其他方法。

(对于上面的TypeToken那里,或许你们会觉得总是需要new TypeToken<List<String>>(){}.getType()每次都要这样写很麻烦,可以参考一下这篇博客,《搞定Gson泛型封装》,链接地址:htttp://www.jianshu.com/p/d62c2be60617)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值