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编写的第一人称射击游戏
Feb 25 Javascript
JavaScript 存在陷阱 删除某一区域所有节点
May 10 Javascript
LazyLoad 延迟加载(按需加载)
May 31 Javascript
各浏览器对link标签onload/onreadystatechange事件支持的差异分析
Apr 27 Javascript
JS实现字符串转日期并比较大小实例分析
Dec 09 Javascript
node.js 中国天气预报 简单实现
Jun 06 Javascript
js实现各种复制到剪贴板的方法(分享)
Oct 27 Javascript
JS检测是否可以访问公网服务器功能代码
Jun 19 Javascript
vue ssr 实现方式(学习笔记)
Jan 18 Javascript
Layui 数据表格批量删除和多条件搜索的实例
Sep 04 Javascript
Vue中通过属性绑定为元素绑定style行内样式的实例代码
Apr 30 Javascript
vue中控制mock在开发环境使用,在生产环境禁用方式
Apr 06 Vue.js
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 include加载文件两种方式效率比较
2010/08/08 PHP
那些年一起学习的PHP(二)
2012/03/21 PHP
php获取网页上所有链接的方法
2015/04/03 PHP
Laravel SQL语句记录方式(推荐)
2016/05/26 PHP
示例详解Laravel的注册重构
2016/08/14 PHP
PHP生成图片验证码功能示例
2017/01/12 PHP
thinkPHP5框架auth权限控制类与用法示例
2018/06/12 PHP
PHP7数组的底层实现示例
2019/08/25 PHP
php设计模式之职责链模式实例分析【星际争霸游戏案例】
2020/03/27 PHP
关于恒等于(===)和非恒等于(!==)
2007/08/20 Javascript
jQuery JSON的解析方式分享
2011/04/05 Javascript
Extjs中ComboBoxTree实现的下拉框树效果(自写)
2013/05/28 Javascript
一个奇葩的最短的 IE 版本判断JS脚本
2014/05/28 Javascript
Jquery Ajax Error 调试错误的技巧
2015/11/20 Javascript
JavaScript中创建对象的模式汇总
2016/04/19 Javascript
AngularJS 模块化详解及实例代码
2016/09/14 Javascript
基于javascript实现数字英文验证码
2017/01/25 Javascript
JS查找英文文章中出现频率最高的单词
2017/03/20 Javascript
js控制文本框禁止输入特殊字符详解
2017/04/07 Javascript
H5基于iScroll实现下拉刷新和上拉加载更多
2017/07/18 Javascript
微信小程序之多列表的显示和隐藏功能【附源码】
2018/08/06 Javascript
three.js利用射线Raycaster进行碰撞检测
2020/03/12 Javascript
wxpython学习笔记(推荐查看)
2014/06/09 Python
Linux系统上Nginx+Python的web.py与Django框架环境
2015/12/25 Python
DataFrame 将某列数据转为数组的方法
2018/04/13 Python
Python实现调用另一个路径下py文件中的函数方法总结
2018/06/07 Python
python实现多进程代码示例
2018/10/31 Python
python实现彩色图转换成灰度图
2019/01/15 Python
python对象销毁实例(垃圾回收)
2020/01/16 Python
浅谈TensorFlow之稀疏张量表示
2020/06/30 Python
requests在python中发送请求的实例讲解
2021/02/17 Python
XD健身器材:Kevlar球、Crossfit健身球
2019/03/26 全球购物
大学校园活动策划书
2014/02/04 职场文书
小学语文国培感言
2014/03/04 职场文书
股东协议书范本
2014/04/14 职场文书
担保书怎么写 ?
2019/04/22 职场文书