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 相关文章推荐
AutoSave/自动存储功能实现
Mar 24 Javascript
javascript 日期常用的方法
Nov 11 Javascript
jQuery的实现原理的模拟代码 -4 重要的扩展函数 extend
Aug 03 Javascript
javascript实现输出指定行数正方形图案的方法
Aug 03 Javascript
js中flexible.js实现淘宝弹性布局方案
Jun 23 Javascript
vue引入ueditor及node后台配置详解
Jan 03 Javascript
vue webpack开发访问后台接口全局配置的方法
Sep 18 Javascript
详解ES6中的 Set Map 数据结构学习总结
Nov 06 Javascript
微信小程序实现bindtap等事件传参
Apr 08 Javascript
详解VScode编辑器vue环境搭建所遇问题解决方案
Apr 26 Javascript
微信小程序HTTP请求从0到1封装
Sep 09 Javascript
Vue+Vant 图片上传加显示的案例
Nov 03 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中file_get_contents与curl性能比较分析
2014/11/08 PHP
php创建和删除目录函数介绍和递归删除目录函数分享
2014/11/18 PHP
WordPress中使主题支持小工具以及添加插件启用函数
2015/12/22 PHP
PHP实现多关键字加亮功能
2016/10/21 PHP
PHP面向对象程序设计组合模式与装饰模式详解
2016/12/02 PHP
PHP基于SPL实现的迭代器模式示例
2018/04/22 PHP
解决laravel查询构造器中的别名问题
2019/10/17 PHP
如何用javascript判断录入的日期是否合法
2007/01/08 Javascript
JQuery 简便实现页面元素数据验证功能
2007/03/24 Javascript
仿服务器端脚本方式的JS模板实现方法
2007/04/27 Javascript
实现JavaScript中继承的三种方式
2009/10/16 Javascript
Js 刷新框架页的代码
2010/04/13 Javascript
js获取判断上传文件后缀名的示例代码
2014/02/19 Javascript
node.js中的http.response.write方法使用说明
2014/12/14 Javascript
Javascript函数式编程简单介绍
2015/10/11 Javascript
javascript数组定义的几种方法
2017/10/06 Javascript
如何编写一个完整的Angular4 FormText 组件
2017/11/18 Javascript
Vue入门之animate过渡动画效果
2018/04/08 Javascript
在 Vue 项目中引入 tinymce 富文本编辑器的完整代码
2018/05/04 Javascript
vue的三种图片引入方式代码实例
2019/11/19 Javascript
原生js中运算符及流程控制示例详解
2021/01/05 Javascript
[01:54]TI4西雅图DOTA2选手欢迎晚宴 现场报道
2014/07/08 DOTA
机器学习python实战之手写数字识别
2017/11/01 Python
Python 获取主机ip与hostname的方法
2018/12/17 Python
pyqt5 使用label控件实时显示时间的实例
2019/06/14 Python
Tensorflow中tf.ConfigProto()的用法详解
2020/02/06 Python
解决安装新版PyQt5、PyQT5-tool后打不开并Designer.exe提示no Qt platform plugin的问题
2020/04/24 Python
python计算auc的方法
2020/09/09 Python
使用Pytorch搭建模型的步骤
2020/11/16 Python
CSS3五个技巧给你的网站带来出色的效果
2009/04/02 HTML / CSS
PacSun官网:加州生活方式服装、鞋子和配饰
2018/03/10 全球购物
英国时尚泳装品牌:Maru Swimwear
2019/10/06 全球购物
软件配置管理有什么好处
2015/04/15 面试题
2014年两会学习心得体会
2014/03/10 职场文书
最新结婚典礼主持词
2014/03/14 职场文书
辞职信范文大全
2015/03/02 职场文书