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 相关文章推荐
引用外部js乱码问题分析及解决方案
Apr 12 Javascript
javascript scrollTop正解使用方法
Nov 14 Javascript
javascript实现框架高度随内容改变的方法
Jul 23 Javascript
jquery 属性选择器(匹配具有指定属性的元素)
Sep 06 Javascript
node.js爬虫爬取拉勾网职位信息
Mar 14 Javascript
前端自动化开发之Node.js的环境搭建教程
Apr 01 Javascript
使用AngularJS编写多选按钮选中时触发指定方法的指令代码详解
Jul 24 Javascript
webpack4之SplitChunksPlugin使用指南
Jun 12 Javascript
vue项目实现github在线预览功能
Jun 20 Javascript
JavaScript实现新年倒计时效果
Nov 17 Javascript
新年快乐! javascript实现超级炫酷的3D烟花特效
Jan 30 Javascript
BootStrap表单验证中的非Submit类型按钮点击时触发验证的坑
Sep 05 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 5.3 下载时 VC9、VC6、Thread Safe、Non Thread Safe的区别分析
2011/03/28 PHP
编写php应用程序实现摘要式身份验证的方法详解
2013/06/08 PHP
php加密解密实用类分享
2014/01/07 PHP
PHP内核探索:变量概述
2014/01/30 PHP
php获取中文拼音首字母类和函数分享
2014/04/24 PHP
教你如何解密 “ PHP 神盾解密工具 ”
2014/06/20 PHP
教你识别简单的免查杀PHP后门
2015/09/13 PHP
Windows 下安装 swoole 图文教程(php)
2017/06/05 PHP
thinkphp5 migrate数据库迁移工具
2018/02/20 PHP
javascript之可拖动的iframe效果代码
2008/08/01 Javascript
前端开发的开始---基于面向对象的Ajax类
2010/09/17 Javascript
JavaScript与DOM组合动态创建表格实例
2012/12/23 Javascript
JavaScript中setMonth()方法的使用详解
2015/06/11 Javascript
基于JS实现类似支付宝支付密码输入框
2016/09/02 Javascript
javascript实现延时显示提示框效果
2017/06/01 Javascript
Angular中ng-repeat与ul li的多层嵌套重复问题
2017/07/24 Javascript
nodejs基础之buffer缓冲区用法分析
2018/12/26 NodeJs
Vue入门学习笔记【基本概念、对象、过滤器、指令等】
2019/04/13 Javascript
vue视频播放插件vue-video-player的具体使用方法
2019/11/08 Javascript
微信小程序收藏功能的实现代码
2020/06/19 Javascript
TypeScript 运行时类型检查补充工具
2020/09/28 Javascript
[07:27]DOTA2卡尔工作室 英雄介绍水晶室女篇
2013/06/21 DOTA
Python中的lstrip()方法使用简介
2015/05/19 Python
Python中for循环控制语句用法实例
2015/06/02 Python
分享一下Python数据分析常用的8款工具
2018/04/29 Python
利用Python模拟登录pastebin.com的实现方法
2019/07/12 Python
CSS3哪些新特性值得称赞
2016/03/02 HTML / CSS
html5使用html2canvas实现浏览器截图的示例
2017/08/31 HTML / CSS
AE美国鹰美国官方网站:American Eagle Outfitters
2016/08/22 全球购物
主键(Primary Key)约束和唯一性(UNIQUE)约束的区别
2013/05/29 面试题
网页设计个人找工作求职信
2013/11/28 职场文书
办公室文员工作自我评价
2013/12/01 职场文书
纪念九一八事变演讲稿:青少年应树立远大理想
2014/09/14 职场文书
“九一八事变纪念日”国旗下讲话稿
2014/09/14 职场文书
读《工匠精神》有感:热爱工作,精益求精
2019/12/28 职场文书
基于Python实现将列表数据生成折线图
2022/03/23 Python