分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 技术分享

[知了堂学习笔记]_JSON数据操作第2讲(JSON的封装与解析)

发布时间:2023-09-06 01:08责任编辑:顾先生关键词:暂无标签

上一讲为大家讲了什么是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)
  1. appealService是service层的实现类,主要去调用DAO进行JBDC
  2. 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;

[知了堂学习笔记]_JSON数据操作第2讲(JSON的封装与解析)

原文地址:http://www.cnblogs.com/java-trm/p/7470111.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved