[知了堂学习笔记]_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)
  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;

时间: 2024-10-22 06:20:00

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

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

一.认识JSON 什么是JSON? JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式..它基于 ECMAScript (w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据.简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言. 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率. JSON语法 {}表示JSON对象 在{}中是1~n个键值对 键与值之间用:隔开,键值对用,隔开.如

【知了堂学习笔记】Eclipse,Myeclipse连接MySQL数据库和Oracle数据库

一.连接MySQL数据库 1.由于Eclipse,Myeclipse都没有连接MySQL数据的架包,我们需要自行下载MySQL连接架包 mysql-connector(官方链接:http://dev.mysql.com/downloads/connector/j/5.0.html),下载版本最好是最新版. 2.下载好后,复制到你的项目里任何位置,然后右键架包选择 Build path -> add to Build path,然后点击项目的Libraries里的Referenced Librar

【知了堂学习笔记】java中常用集合的理解

最近学习了java中常用集合类的一些知识,在这里作为一只小白,我来谈谈我的理解,顺带总结知识点. 引入:在没有接触之前,听到集合,给我感觉是想到了数学中的集合一样,里面存放着一个一个的元素.其实不然,这个集合也就差不多,是用来存放元素的容器. Java中的集合类包含的内容很多而且很重要,很多数据的存储和处理(排序,去重,筛选等)都需要通过集合类来完成. 今天我要谈的主要是,如下图所示: 1.Collection Collection是最基本的集合类型,若要检查Collection中的元素,可以使

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

来了来了~~~~~我们的"织女"--Tomcat来了,牛郎们等急了吧!哈哈! 一.安装Tomcat 下载地址:http://tomcat.apache.org/download-70.cgi 左侧:选择的是Tomcat的版本,这里以Tomcat 7为例. 右边可以选择不同的安装版本,红框部分是windows的zip安装版本, 选择和自己jdk位数一样的位数,进行下载就行了. 安装Tomcat 那就很简单了解压就行了,解压后如下图: 解压后选择 bin目录下面的->startup.

知了堂学习笔记-微信小程序框架

开发者文档:https://mp.weixin.qq.com/debug/wxadoc/dev/framework/MINA.html 一.文件结构 小程序包含一个描述整体程序的app和多个描述各自页面的page. 一个小程序主题部分由三个文件组成,必须放在项目的根目录, 如下: app.js                   必填               小程序逻辑 app.json                必填              小程序公共设置 app.wxss    

[知了堂学习笔记]_初始化顺序

在我们每次new一个对象的时候,对象都会被初始化,但是他们初始化的顺序又是怎样呢?现在我以存在继承与不存在继承的代码给大家演示. 一.对于没有继承的初始化的顺序(静态变量,静态块.构造函数.变量) package test; //没有继承情况下的代码 public class test5 { //静态变量 private static String st="静态变量"; //静态块 static{ System.out.println(st); System.out.println(&

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

整体展示: 上一讲实现了诸多对象,这次我们就需要实现许多逻辑方法,如控制飞机移动,判断子弹击中敌机,敌机与英雄飞机相撞等等.并且我们在实现这些功能的时候需要计时器去调用这些方法.setInterval(fun,ms) 在调用setInterval()会返回一个类似id的字段,该字段在clearInterval(id)可以指定相应的计时器并清除 一.开始游戏 /** * 面板441*632 * 飞机 66*80 */ /** * 开始游戏 */ function startGame() { var

[知了堂学习笔记]_纯JS制作《飞机大战》游戏_第1讲(实现思路与游戏界面的实现)

整体效果展示: 一.实现思路 如图,这是我完成该项目的一个逻辑图,也是一个功能模块完成的顺序图. 游戏界面的完成 英雄飞机对象实现,在实现发射子弹方法过程中,又引出了子弹对象并实现.在此时,英雄飞机能进行基本操作了. 敌机对象的实现,并且初步完成了boos出现(30s自动出现).然后又引出了许多方法的处理,如英雄子弹击中敌机和boos,英雄与敌机相撞等等.并一一解决. 随后又设置了一些游戏的参数,如血量,关卡数,等级,积分,必杀,道具对象等等. 最后又完成了一些辅助功能,暂停游戏,继续游戏,退出

[知了堂学习笔记]_用JS制作《飞机大作战》游戏_第2讲(四大界面之间的跳转与玩家飞机的移动)

一.通过点击按钮事件,实现四大界面之间的跳转: (一)跳转的思路: 1.打开软件,只显示登录界面(隐藏游戏界面.暂停界面.玩家死亡界面) 2.点击微信登录(QQ登录)跳转到游戏界面,隐藏登录界面 3.点击暂停,弹出具有透明度的暂停界面 4.点击暂停界面的开始按钮,隐藏暂停界面,调用开始方法(点击登录跳转的方法): 5.点击暂停界面的退出游戏,只显示登录界面,隐藏其他界面: 6.游戏结束界面,该界面的跳转目前还不能通过游戏实现,可以先建设(根据上一讲的游戏界面图片制作). 7.点击游戏结束界面的开