上一讲为大家讲了什么是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的封装与解析)的更多相关文章

  1. [知了堂学习笔记]_JSON数据操作第1讲(初识JSON)

    一.认识JSON 什么是JSON? JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式..它基于 ECMAScript (w3c制定的js规 ...

  2. 【知了堂学习笔记】java 自定义异常

    java 常见异常种类(Java Exception): 算术异常类:ArithmeticExecption 空指针异常类:NullPointerException 类型强制转换异常:ClassCas ...

  3. [知了堂学习笔记]_ajax的两种使用方式

    一.Ajax概述 1.什么是同步,什么是异步 同步现象:客户端发送请求到服务器端,当服务器返回响应之前,客户端都处于等待 卡死状态 异步现象:客户端发送请求到服务器端,无论服务器是否返回响应,客户端都 ...

  4. 【知了堂学习笔记】java 底层容易忽略的知识点

    1. java中的关键字 提到关键字,最主要的就是不能用关键字作为标识符,值得注意的有以下几点. ①其中goto与const在java中没有定义,但是也是关键字.这个基本用不到,但是应该有个认知. ② ...

  5. 【知了堂学习笔记】java IO流归纳总结

    皮皮潇最近学到了IO流但是感觉这一块要记的东西太多了,所以重API上查阅并总结了以下几点关于IO的知识. 1.File(文件类): File类是文件以及文件夹进行封装的对象,用对象的思想来操作文件和文 ...

  6. 【知了堂学习笔记】_String、StringBuffer与StringBuilder的区别

    String Stringbuffer  StringBuilder的区别: 1.string是字符串常量,且长度是不可改变的,Stringbuffer.stringBuilder是字符串变量 2.S ...

  7. [知了堂学习笔记]_牵线Eclipse和Tomcat第二篇 —— 安装Tomcat&&添加Tomcat到Eclipse

    来了来了~~~~~我们的"织女"--Tomcat来了,牛郎们等急了吧!哈哈! 一.安装Tomcat 下载地址:http://tomcat.apache.org/download-7 ...

  8. 【知了堂学习笔记】java 编写几种常见排序算法

    排序的分类: 一.交换排序 所谓交换,就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置,交换排序的特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动. 1.冒泡 ...

  9. [知了堂学习笔记]_纯JS制作《飞机大战》游戏_第3讲(逻辑方法的实现)

    整体展示: 上一讲实现了诸多对象,这次我们就需要实现许多逻辑方法,如控制飞机移动,判断子弹击中敌机,敌机与英雄飞机相撞等等.并且我们在实现这些功能的时候需要计时器去调用这些方法.setInterval ...

随机推荐

  1. (转)spring学习之@ModelAttribute运用详解

    @ModelAttribute使用详解 1 @ModelAttribute注释方法 例子(1),(2),(3)类似,被@ModelAttribute注释的方法会在此controller每个方法执行前被 ...

  2. matlab图片清晰度调整

    打开.fig文件后: 1.首先设置窗口中的文字大小和相关的图例 2.然后将窗口缩小到要在word中或者ppt中展示图片的大小(避免图片缩小减少清晰度) 3.调整横纵坐标说明,使得布局合理 4.点击Ei ...

  3. 【firefox】关闭firefox缓存

    在Firefox中关闭缓存 看看这里 在地址栏输入:about:config 然后在过滤器中输入:browser.cache.disk.enable 解释:When a page is loaded, ...

  4. java笔录---反射机制(1)

    引言   为了方便记忆java的反射机制,在这里仔细的总结了一下.主要是怕以后忘记了,这样也方便回忆.因为最近利用空余时间深入的了解spring和Mybatis框架,   像spring中核心模块IO ...

  5. linux下怎么卸载自带的JDK和安装想要的JDK

    linux下怎么卸载自带的JDK和安装想要的JDK   安装linux系统后,系统有自带jdk的版本,因为系统中的有些软件需要使用此环境.但时候我们安装eclipse和tomcat的时候,使用此jdk ...

  6. Openresty使用Thrift安装步骤

    最新想用Golang与Openresty相互通讯调用,使用RPC协议来实现,后来研究最终选择了Thrift:主要还是FB实现了支持Lua和Go模块,直接编译就可以成功嵌套使用,非常方便:研究了两天最后 ...

  7. 兔子与樱花[HEOI2015]

    题目描述 很久很久之前,森林里住着一群兔子.有一天,兔子们突然决定要去看樱花.兔子们所在森林里的樱花树很特殊.樱花树由n个树枝分叉点组成,编号从0到n-1,这n个分叉点由n-1个树枝连接,我们可以把它 ...

  8. 编写一个类,其中包含一个排序的方法Sort(),当传入的是一串整数,就按照从小到大的顺序输出,如果传入的是一个字符串,就将字符串反序输出。

    namespace test2 { class Program { /// <summary> /// 编写一个类,其中包含一个排序的方法Sort(),当传入的是一串整数,就按照从小到大的 ...

  9. 使用Travis CI自动部署Hexo博客

    自从使用GitHub Pages和Hexo来发布博客之后,不得不说方便了许多,只需要几个简单的命令博客就发布了.但在不断的使用中发现每次的发布操作也挺耗时的. 我一般的操作是将平时整理好的md文件放到 ...

  10. ios UIButton改背景

    以下orangeButton.png与orangeButtonHighlight.png分别用于按钮平常状态和被点击时的状态: UIImage *buttonImage = [[UIImage ima ...