一、Json 的使用
我们上一篇讲述了 Json 的基本用法,我们还自己写了几个 Json。
我们在写的过程中不难发现,就是这个 \ 这个转义符添加的问题,这要是让我们写上一个班级的学生数据,那就完蛋了,所以为了不让我们自己去一个一个写,我们引入两种常用的 Json 格式化的 工具
一个是谷歌公司推出的 Gson,还有一个是阿里巴巴推出的 Fastjson
这两个我们用那个都行,看自己选择,我先来说这个 Gson
在此之前,我们创建一个 Student 的类,我们一会要用~~
id 主键
name 姓名
createDt 创建日期
price 自己有多少钱
hobbies 爱好
自己再去添加一下 get/set 方法,还有构造、toString
二、Gson
首先,我们去 maven 仓库,把这个 Gson 的包给他下载下来,下载地址:https://mvnrepository.com/artifact/com.google.code.gson/gson/2.8.6
下载下来之后,我们放到我们之前的 AjaxHelloWorld 项目中
然后,我们来写一个 GsonTest。
首先,我们先实例化一个 Student 的集合,然后,给这个集合赋一些初始值,后面要用
然后我们来开始做操作
1. 实例化一个简单的 Json 对象
这里我们需要用到 Gson 给我们提供的 JsonObject 对象,我们用它来创建对象,然后调用 addProperty 方法,给这个对象添加键值对
这里注意一下,看清楚导入的包,我们使用的是 import com.google.gson.JsonObject; 运行一下
当然了,这里我们再来试试别的
注意,这里只能添加引用类型,不能添加基本数据类型的值!!
可以看到,我们又添加了一个 key 为 123 的对象,但是并没有显示,而是做了替换,这个就是我之前说的,同一个 key 不可能存在同一个层级下。
2. 实例化一个简单的 Json 数组
实例化 Json 数组,我们是使用的 Gson 给我们提供的 JsonArray,添加对象需要调用 add 方法,如下
然后我们创建两个 JsonObject 对象,存放到这个数组中
运行一下,看看输出什么
可以看到,是一个数组对象
3. 将 list 集合转换成 Json
我们再来写一个方法,将我们之前定义的 list 集合转换成我们的 Json,这里其实我们调用的是 Gson 提供的 toJson 方法,我们来看一下
我们运行一下,看看效果
是没有问题的,我们把结果复制到 Json 检查的网站去检测一下
也是没有问题的
这里我要说一下,这个 Gson 对象的 toJson 方法有很多重载方法,可以将很多种数据结构的对象转换成 Json 对象,大家可以自己去研究研究(集合都可以转换,更不要说单个对象什么的了)
4. 将 Json 转换成 Java 对象
我们将 Json 字符串 转换成 Java 对象,这里呢,我们用刚刚生成的 Json 来进行测试
这里呢,我们需要用到 Gson 给我们提供的 fromJson 方法,这个 fromJson 方法里面有很多的构造函数
可以看到,提供的很全哈,我们这里使用倒数第二个,这里还需要多加一个类的支持
还有一点,这里需要知道具体的 Json 对象的格式,不然会报错,一般情况下,我们都是知道这个格式,然后进行转换
我们把这个 Json 数组转换成 List 集合,然后进行遍历输出一下
是没有问题的啊,因为我们只有一个对象,所以只能遍历出一个,当然啊,这里字段需要对应,不对应也是没有办法将这些值赋值给我们的对象中的属性的
三、FastJson
其实,FastJson 和 Gson 非常类似,仅仅是调用的函数名称不同,参数不同点而已,其他的使用方式都是类似的,FastJson Maven 下载地址:https://mvnrepository.com/artifact/com.alibaba/fastjson/1.2.75
下载好同样扔到我们的项目中
这里我直接上代码了,不说那么多废话了
1. 创建普通 Json 对象
这里要注意一下,Gson 给我们提供的是 JsonObject,阿里的 FastJson 给我们提供的是 JSONObject 不一样啊,看清楚了~~
2. 创建 Json 数组
3. list 集合转换 Json
这里需要注意的是,JSONObject 这个对象使用 toJSON 方法后,返回的是一个 Object 对象,这个对象最好强转成 JSONArray,或者是 JSONObject 去接收
4. Json 字符串转换成对象
这里是因为 JSONObject 调用 parse 之后,返回的是一个 Object 对象,因为我知道他是什么类型的,所以我就使用 List 进行接收
总体来说,两个都功能差不多,性能方面,是 FastJson 更好,但是相比这样的强转,我更喜欢 Gson 的转换~,当然,具体使用什么,看你自己~
四、Json 和 Ajax 配合使用
这里我们用 Gson 来实现一下它俩的配合~
我们先来修改一下我们之前的那个 Servlet
我们使用 JsonObject 将 Json 返回到前端,前端我们不变,我们继续使用 index2.html 进行测试,启动服务器,我们看一下结果
是 OK 的啊。
我们接下来修改一下,我们使用 $.get 方式进行获取一下,我们再来复制一个 index3.html
从新启动一下服务器,我们再来看看能不能行
也是可以的
当然,POST 也是可以的
原因就是我们这里调用了 doGet
Ajax 与 Json 就讲完了,希望大家可以好好学习理解他们,毕竟这玩意需要陪我们很久的
大家可以自己好好查查看,有不懂的可以联系我 QQ:2100363119
欢迎大家访问我的网站:https://www.lemon1234.com
可以的话关注一下我的公众号,就在我网站,每天都有更新~~~,无限资源畅游 Java,感谢~
最近小程序也开放了,大家可以扫码进行玩玩看