上一讲为大家讲了什么是JSON,那么这一讲为大家带来了在WEB项目中JSON的用法,也就是JSON的封装与解析。
此图是数据库中的部分内容
一、JSON封装
所谓的JSON封装,指的是在Servlet中将从数据库得到的数据转化成JSON格式的字符串。
那么什么是JSON格式的字符串?
- JSON格式的字符串就是指字符串的内容要完全符合JSON数据的格式
这个就是在servlet中输出的已经封装好的JSON格式字符串,在控制台输出的效果。
如何封装
- 在我自己的WEB中,原本想用原生态的JSON去封装,但是项目经理给我介绍了GSON,所以我是用GSON去封装的
代码(servlet)
/*** * 通过id来检索申诉信息并传到页面AJAX调用 * admin * @return */ public String getListAppeal(HttpServletRequest request, HttpServletResponse response){ String id = request.getParameter("appeal_id"); try { response.setContentType("text/html;charset=utf-8"); PrintWriter out = response.getWriter(); Gson gson = new Gson(); System.out.println("我是JSON格式字符串:"+gson.toJson(appealService.getListAppeal(id))); out.print(gson.toJson(appealService.getListAppeal(id))); out.close(); } catch (IOException e) { e.printStackTrace(); } return null;//null代表AJAX调用 }
-
appealService.getListAppeal(id)
-
appealService是service层的实现类,主要去调用DAO进行JBDC
-
getListAppeal(id) 如下图
-
gson.toJson()
后面的参数是Object ,那么参数就可以是list,map,bean(自定义类)等。用这个方法会返回JSON封装的字符串
二、解析
JSON解析指JSP页面接收到由Servlet发送的JSON字符串,转化为JSON对象的过程。
- 在解析中我们需要使用到eval()这个方法
代码:
$.ajax({ url:"appeal.do", data:{"method":"getListAppeal","appeal_id":id}, datatype:"json", type:"POST", success: function(result){//result-->接收servlet层返回的参数 console.log("未处理==="+result); var json = eval(result);/* JSON解析 */ console.log("已处理==="+json); //获取JSON数据中的值 $("#id").val(json[0].appeal_id); $("#userAccount").val(json[0].user_account); $("#type").val(json[0].appeal_type); $("#content").val(json[0].appeal_content); $("#time").val(json[0].appeal_time); } });
结果:
值得提醒的一点是,在调用gson.toJson()方式,如果参数是MAP可能会出现一些问题,就是在解析过程中,按照上面的步骤不能转化为JSON对象哦。
代码:
$.ajax({ url:"orderServlet.do?method=getMapOrderNumByGame", datatype:"JSON", type:"POST", async: false, success:function(result){ /* alert(eval(result)) */ console.log("未处理==》"+result); console.log("处理一次===》"+eval(result)); var json = eval(eval(result)); console.log("处理两次===》"+json); option.series[0].data = json var s=""; for ( var j in json) { s+=","+json[j].name } s=s.substr(1); option.legend.data=s.split(","); myChart.setOption(option); } });
结果:
可以看出,在未处理json字符串的时候,该字符串有存在转义字符的,在处理一次后,就和上面的步骤一样了,所以在这里要进行两次解析。
以上为今天的内容,如需了解更加深入的知识,请大家进入知了堂社区:http://www.zhiliaotang.com/portal.php;
时间: 2024-10-22 06:20:00