json原理分析及实例介绍


Posted in Javascript onNovember 29, 2012

这次在项目中前后台的数据交互中用到了json,经过这段时间的使用,大概了解了一下,简单总结一下json。
JSON:JavaScript 对象表示法(JavaScript Object Notation)。
JSON 是存储和交换文本信息的语法。类似 XML。
JSON 比 XML 更小、更快,更易解析。
和 XML 一样,JSON 也是基于纯文本的数据格式。由于 JSON 天生是为 JavaScript 准备的,因此,JSON 的数据格式非常简单,您可以用 JSON 传输一个简单的 String,Number,Boolean,也可以传输一个数组,或者一个复杂的 Object 对象。
先看controller中的一段代码。看主要是看从数据库查询出来的数据是怎样以json的格式输出的。
[java]

@RequestMapping("/work/plan/checkSubmitForApproval") 
public void checkSubmitForApproval(String planId,HttpServletRequest request,HttpServletResponse response) throws UnsupportedEncodingException{ 
String result="{\"result\":\"faild\",\"personSituation\":\"null\"}"; 
HttpSession session = request.getSession(); 
String industryID = (String) session.getAttribute("industryID"); 
IIndustry industry = industryService.getById(industryID); 
if(industry.getType().equals("XXX")){ 
try { 
boolean flag = false; 
IProjectMain yearPlan = projectPlanService.findProjectPlanById(planId); 
List<IStaffInfo> listStaffInfo = sysStaffService.getStaffByPlanId(planId, industryID); 
for(int i=0;i<listStaffInfo.size();i++){ 
if(listStaffInfo.get(i).getPractitionersPost().equals(StaffRole.PROGECTMANAGER.toString())){ 
flag = true; 
} 
} 
if(flag == true){ 
result="{\"result\":\"success\",\"personSituation\":\""+yearPlan.getPerson_Situation()+"\"}"; 
}else{ 
result="{\"result\":\"success\",\"personSituation\":\""+yearPlan.getPerson_Situation()+"\",\"isManager\":\"false\"}"; 
} 
} catch (Exception e) { 
result="{\"result\":\"falid\"}"; 
throw new PlatformException(e); 
}finally{ 
OutputUtils.write(response,result,"text/x-json;charset=UTF-8"); 
}

先PutputUtils中的write代码
[java]
public static void write(HttpServletResponse response, String text, String contentType) 
{ 
PrintWriter out=null; 
response.setHeader("Pragma", "No-cache"); 
response.setHeader("Cache-Control", "no-cache"); 
response.setDateHeader("Expires", 0); 
response.setContentType(contentType); 
try 
{ 
out = response.getWriter(); 
out.write(text); 
} 
catch (IOException e) 
{ 
Logger.getLogger(OutputUtils.class).error(e.getMessage(), e); 
} finally{ 
if(out!=null){ 
out.flush(); 
out.close(); 
} 
} 
}

其中的思路是得到response的printwriter,将要输出的信息设置到其中。在界面层利用jquery的Post判断返回的信息。
[javascript]
<span style="white-space:pre"> </span>function distribute(){ 
var dplanId = $(".currli").attr("id"); 
if(dplanId != ""){ 
$.ajax({ 
type : "POST", 
url :做验证的action url, 
dataType : "json", 
success : function(data) { 
//HAVE为已分配状态 
if (data.result == "success" && data.personSituation == "UNHAVE") { 
with (document.getElementById("planForm")) { 
action=验证合法后要提交的url; 
method="post"; 
submit(); 
} 
<span style="white-space:pre"> </span>}

其中success:function(data)是一个回调函数,即上面做的验证action的方法成功之后执行的操作。在jquery的使用方法详情点击这里查看。
关于jquery的post提交不理解的同学,点击这里学习。
关于ajax和jquery的历史,建议参见维基百科中,写的很清楚。
jquery已经封装好了从response中取data的操作,所以这里用起来非常方便,省去了从xml中一点一点读取的头疼,给开发带来了极大方便。
Javascript 相关文章推荐
推荐一些非常不错的javascript学习资源站点
Aug 29 Javascript
jquery 简单导航实现代码
Sep 11 Javascript
jquery 学习之二 属性相关
Nov 23 Javascript
javascript学习笔记(七)Ajax和Http状态码
Oct 08 Javascript
详解javascript事件冒泡
Jan 09 Javascript
jquery自定义插件开发之window的实现过程
May 06 Javascript
javascript基础语法——全面理解变量和标识符
Jun 02 Javascript
Js实现中国公民身份证号码有效性验证实例代码
May 03 Javascript
微信小程序云开发实现数据添加、查询和分页
May 17 Javascript
使用JQuery自动完成插件Auto Complete详解
Jun 18 jQuery
微信小程序导入Vant报错VM292:1 thirdScriptError的解决方法
Aug 01 Javascript
ES5 模拟 ES6 的 Symbol 实现私有成员功能示例
May 06 Javascript
javascript全局变量封装模块实现代码
Nov 28 #Javascript
Javascript Request获取请求参数如何实现
Nov 28 #Javascript
js移除事件 js绑定事件实例应用
Nov 28 #Javascript
js arguments对象应用介绍
Nov 28 #Javascript
web基于浏览器的本地存储方法应用
Nov 27 #Javascript
extjs 04_grid 单击事件新发现
Nov 27 #Javascript
javascript 正则表达式相关应介绍
Nov 27 #Javascript
You might like
《PHP编程最快明白》第六讲:Mysql数据库操作
2010/11/01 PHP
php编写的一个E-mail验证类
2015/03/25 PHP
yii2超好用的日期组件和时间组件
2016/05/05 PHP
py文件转exe时包含paramiko模块出错解决方法
2016/08/12 PHP
Jquery uploadify图片上传插件无法上传的解决方法
2013/12/16 Javascript
html5 canvas js(数字时钟)实例代码
2013/12/23 Javascript
jQuery中data()方法用法实例
2014/12/27 Javascript
Javascript点击其他任意地方隐藏关闭DIV实例
2016/06/21 Javascript
使用Curl命令查看请求响应时间方法
2016/11/04 Javascript
分享bootstrap学习笔记心得(组件及其属性)
2017/01/11 Javascript
js实现文字跑马灯效果
2017/02/23 Javascript
JavaScript变量作用域_动力节点Java学院整理
2017/06/27 Javascript
get  post jsonp三种数据交互形式实例详解
2017/08/25 Javascript
js实现加载页面就自动触发超链接的示例
2017/08/31 Javascript
微信小程序实现点击按钮修改文字大小功能【附demo源码下载】
2017/12/06 Javascript
对angular 监控数据模型变化的事件方法$watch详解
2018/10/09 Javascript
微信小程序 scroll-view 水平滚动实现过程解析
2019/10/12 Javascript
jQuery实现消息弹出框效果
2019/12/10 jQuery
基于js实现判断浏览器类型代码实例
2020/07/17 Javascript
JavaScript中的几种继承方法示例
2020/12/06 Javascript
[02:13] 完美世界DOTA2联赛PWL DAY5集锦
2020/11/03 DOTA
Python中的ctime()方法使用教程
2015/05/22 Python
Python编程实现蚁群算法详解
2017/11/13 Python
Python使用分布式锁的代码演示示例
2018/07/30 Python
wxPython的安装与使用教程
2018/08/31 Python
Python函数参数匹配模型通用规则keyword-only参数详解
2019/06/10 Python
python中下标和切片的使用方法解析
2019/08/27 Python
python3中rank函数的用法
2019/11/27 Python
详解python with 上下文管理器
2020/09/02 Python
python简单利用字典破解zip文件口令
2020/09/07 Python
为什么要用EJB
2014/04/17 面试题
师范大学生求职信
2014/06/13 职场文书
企业法人授权委托书
2014/09/25 职场文书
作风整顿剖析材料
2014/09/30 职场文书
2015年小学英语教师工作总结
2015/05/12 职场文书
花田少年史观后感
2015/06/16 职场文书