Javaweb-案例练习-3-JSON对象
JavaWeb中常用json-lib处理JSON:把commons-lang、commons-collections、ezmorph、json-lib四个jar包拷入WEB-INF/lib;JSONObject.fromObject(bean)可将JavaBean转成JSON字符串,JSONArray.fromObject(list)封装List集合为JSON数组,用JsonConfig的setExcludes可过滤pnum、id、category、description等不需要序列化的字段,比逗号拼接字符串传给前端简单得多。
- json-lib依赖四个jar:commons-lang、commons-collections、ezmorph、json-lib
- JSONObject.fromObject把Book等JavaBean对象转成JSON格式字符串
- JSONArray.fromObject(list)把List集合封装为JSON数组返回前端
- JsonConfig的setExcludes可排除pnum、id、category等字段不输出
- Ajax场景用JSON数组替代逗号拼接字符串,前端遍历更简单
JSON对象和简单练习
前面一篇我们查找的图书的name都是通过逗号隔开,然后拼接成一个字符串传给浏览器。其实我们可以把多个图书名称用数组格式传给浏览器,前端JS代码通过遍历这个数组,也是可以拿到这些name数据。现在,我们一般不用数组,而是用JSON这格式。本篇就来看看JSON是如何解决上一篇字符串传给浏览器的代码,以及JSON对象中常见的操作。
1环境搭建
在使用JSON对象之前,我们需要提前下载几个jar包,拷贝到java web工程下的\WEB-INF\lib\路径下
以下这几个jar包可以到maven仓库下载,我这里也贴出来了这几个下载地址。
commons-lang-xx.jar
commons-collections-3.2.2.jar
ezmorph-1.0.6.jar
json-lib-2.4-jdk15.jar
2把字符串改成JSON
上一篇我们在SearchBookAJAXServlet.java中是用字符串拼接,这次我们这里改成JSON。
然后找打menu_search.jsp,更改下面红圈这行代码。
这个时候ss直接接收的就是一个数组对象,这里是JSONArray对象。其中eval函数的作用就是让后面这个数组对象作为一个完整表达式存在,不然会被切割乱七八糟。保存代码之后,部署tomcat,然后重启,浏览器访问
在搜索框输入一个j或者java,看看控制台打印内容。
我这页面查询了两次,所以输出两次。
所以,使用JSON对象一句话就搞定了,比前面字符串拼接简单多了。下面,来看看JSON的常见几个操作。
3 JSON对象常见操作
这里,还是在这个图书项目,新建一个json的包,然后新建一个JSONTest.java类
我们来写一个测试用例,作用就是把JavaBean对象转成JSON格式的Sting.
使用场景1:使用JSONObject对象封装java中高级对象类型数据。
package com.kaigejava.json;
import org.junit.Test;
import
原创不易,完成人机校验,阅读全文
常见问题
JavaBean怎么转换成JSON字符串?
使用net.sf.json.JSONObject的fromObject方法,传入JavaBean对象后调用toString即可得到JSON字符串,未赋值的String属性默认为空字符串,int类型默认为0。
返回JSON时如何去掉部分字段?
新建JsonConfig对象,调用setExcludes传入不需要的字段名数组,再把JsonConfig作为参数传给JSONArray.fromObject(list, jc),输出结果就不含被排除的字段。