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操作userdata
Apr 27 Javascript
用document.documentElement取代document.body的原因分析
Nov 12 Javascript
模仿JQuery.extend函数扩展自己对象的js代码
Dec 09 Javascript
jquery+ajax每秒向后台发送请求数据然后返回页面的代码
Jan 17 Javascript
jqplot通过ajax动态画折线图的方法及思路
Dec 08 Javascript
AngularJS使用ng-class动态增减class样式的方法示例
May 18 Javascript
AngularJS实时获取并显示密码的方法
Feb 06 Javascript
Array数组对象中的forEach、map、filter及reduce详析
Aug 02 Javascript
webpack4 CSS Tree Shaking的使用
Sep 03 Javascript
说说如何利用 Node.js 代理解决跨域问题
Apr 22 Javascript
Vue 权限控制的两种方法(路由验证)
Aug 16 Javascript
JS实现横向跑马灯效果代码
Apr 20 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
PHP5 字符串处理函数大全
2010/03/23 PHP
使用PHP遍历文件夹与子目录的函数代码
2011/09/26 PHP
解析php curl_setopt 函数的相关应用及介绍
2013/06/17 PHP
高质量PHP代码的50个实用技巧必备(上)
2016/01/22 PHP
基于PHP后台的Android新闻浏览客户端
2016/05/23 PHP
兼容IE和Firefox的javascript获取iframe文档内容的函数
2011/08/15 Javascript
jQuery学习笔记 操作jQuery对象 文档处理
2012/09/19 Javascript
javascript中拼接HTML字符串的最快、最好的方法
2014/06/07 Javascript
javascript常见数据验证插件大全
2015/08/03 Javascript
手机端转盘抽奖代码分享
2015/09/10 Javascript
AngularJS转换响应内容
2016/01/27 Javascript
JavaScript中0和&quot;&quot;比较引发的问题
2016/05/26 Javascript
Bootstrap路径导航与分页学习使用
2017/02/08 Javascript
vue实现图书管理demo详解
2017/10/17 Javascript
Windows安装Node.js报错:2503、2502的解决方法
2017/10/25 Javascript
Node 搭建一个静态资源服务器的实现
2019/05/20 Javascript
详解json串反转义(消除反斜杠)
2019/08/12 Javascript
vue3修改link标签默认icon无效问题详解
2019/10/09 Javascript
JavaScript Canvas编写炫彩的网页时钟
2019/10/16 Javascript
[01:53]3.19 DOTA2发布会 现场精彩Coser表演
2014/03/25 DOTA
分享一下Python 开发者节省时间的10个方法
2015/10/02 Python
Mac中升级Python2.7到Python3.5步骤详解
2017/04/27 Python
基于Python的XSS测试工具XSStrike使用方法
2017/07/29 Python
Python3 模块、包调用&amp;路径详解
2017/10/25 Python
python使用代理ip访问网站的实例
2018/05/07 Python
Pandas读写CSV文件的方法示例
2019/03/27 Python
Python进程间通信multiprocess代码实例
2020/03/18 Python
使用pandas库对csv文件进行筛选保存
2020/05/25 Python
python对一个数向上取整的实例方法
2020/06/18 Python
田径运动会开幕式及主持词
2014/03/28 职场文书
工厂门卫岗位职责范本
2014/04/04 职场文书
暑期教师培训方案
2014/06/07 职场文书
经营理念标语
2014/06/21 职场文书
2014党员干部四风问题对照检查材料思想汇报
2014/09/24 职场文书
机关干部作风整顿心得体会
2016/01/22 职场文书
详解PHP Swoole与TCP三次握手
2021/05/27 PHP