[知了堂学习笔记]_JSON数据操作第2讲(JSON的封装与解析)
上一讲为大家讲了什么是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;
[知了堂学习笔记]_JSON数据操作第2讲(JSON的封装与解析)的更多相关文章
- [知了堂学习笔记]_JSON数据操作第1讲(初识JSON)
一.认识JSON 什么是JSON? JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式..它基于 ECMAScript (w3c制定的js规 ...
- 【知了堂学习笔记】java 自定义异常
java 常见异常种类(Java Exception): 算术异常类:ArithmeticExecption 空指针异常类:NullPointerException 类型强制转换异常:ClassCas ...
- [知了堂学习笔记]_ajax的两种使用方式
一.Ajax概述 1.什么是同步,什么是异步 同步现象:客户端发送请求到服务器端,当服务器返回响应之前,客户端都处于等待 卡死状态 异步现象:客户端发送请求到服务器端,无论服务器是否返回响应,客户端都 ...
- 【知了堂学习笔记】java 底层容易忽略的知识点
1. java中的关键字 提到关键字,最主要的就是不能用关键字作为标识符,值得注意的有以下几点. ①其中goto与const在java中没有定义,但是也是关键字.这个基本用不到,但是应该有个认知. ② ...
- 【知了堂学习笔记】java IO流归纳总结
皮皮潇最近学到了IO流但是感觉这一块要记的东西太多了,所以重API上查阅并总结了以下几点关于IO的知识. 1.File(文件类): File类是文件以及文件夹进行封装的对象,用对象的思想来操作文件和文 ...
- 【知了堂学习笔记】_String、StringBuffer与StringBuilder的区别
String Stringbuffer StringBuilder的区别: 1.string是字符串常量,且长度是不可改变的,Stringbuffer.stringBuilder是字符串变量 2.S ...
- [知了堂学习笔记]_牵线Eclipse和Tomcat第二篇 —— 安装Tomcat&&添加Tomcat到Eclipse
来了来了~~~~~我们的"织女"--Tomcat来了,牛郎们等急了吧!哈哈! 一.安装Tomcat 下载地址:http://tomcat.apache.org/download-7 ...
- 【知了堂学习笔记】java 编写几种常见排序算法
排序的分类: 一.交换排序 所谓交换,就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置,交换排序的特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动. 1.冒泡 ...
- [知了堂学习笔记]_纯JS制作《飞机大战》游戏_第3讲(逻辑方法的实现)
整体展示: 上一讲实现了诸多对象,这次我们就需要实现许多逻辑方法,如控制飞机移动,判断子弹击中敌机,敌机与英雄飞机相撞等等.并且我们在实现这些功能的时候需要计时器去调用这些方法.setInterval ...
随机推荐
- linux函数的阻塞与非阻塞IO及错误处理
1.阻塞是指进程等待某一个事件的发生而处于等待状态不往下执行,如果等待的事件发生了则会继续执行该进程.调用系统阻塞函数可能会导致进程阻塞进入睡眠状态. 2.阻塞IO之read读取键盘输入数据 3.li ...
- jmeter问题处理随笔1 - CSV取值数据异常处理(包含"号,","号的情况)
背景 jmeter测试中通过CSV进行用例数据的管理,在result断言中间需要使用json格式的数据,会包含 " ",",这个时候发现CSV取值会报错或者乱码 解决 用 ...
- tensorflow Sigmoid 应用
1.函数 函数:f(z) = 1 / (1 + exp( − z)) 导数:f(z)' = f(z)(1 − f(z)) 2.tensorflow实现 #!/usr/bin/env python # ...
- Result Maps collection does not contain value for...
出现上述错误 主要是因为你的select标签内部的resultMap属性指向的不正确 在sql文件中只要有一个resultMap或resultType属性指向错误,则在这个文件中其余正确的语句也不能执 ...
- Angular页面加载后自动弹窗
首先在控制器内写好一个弹窗,我用的是ionic的默认提示对话框 // 一个确认对话框 $scope.showConfirm = function() { var confirmPopup = $ion ...
- 12. leetcode 455.Assign Cookies
Assume you are an awesome parent and want to give your children some cookies. But, you should give e ...
- Comparable与Comparator,java中的排序与比较
1:比较和排序的概念 比较:两个实体类之间按>,=,<进行比较. 排序:在集合类中,对集合类中的实体进行排序.排序基于的算法基于实体类提供的比较函数. 基本型别都提供了默认的比较算法,如s ...
- [PGM] Exact Inference for calculating marginal distribution
如何在贝叶斯网络中求解某变量的边缘分布? 这是一个问题. 贝叶斯网络如下: CPTs如下: (1) How to compute p( L | C = high )? p( L | C = high ...
- 【原创】Superset在windows下的安装配置
Superset是由Airbnb(知名在线房屋短租公司)开源BI数据分析与可视化平台(曾用名Caravel.Panoramix),该工具主要特点是可自助分析.自定义仪表盘.分析结果可视化(导出).用户 ...
- [Java] Java读取Word文档
前言 最近需要做一些NLP 方面的工作,使用的是Java,在此总结一下使用Java读取Word(.doc)格式文件的方法. Apache基金会非常厉害,开源工具包POI就可以处理微软家的文档,甚至包括 ...