提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
转帖|其它|编辑:郝浩|2010-11-17 17:09:43.000|阅读 557 次
概述:AJAX这个词语已经火爆一阵了,这个词语中的X就是表示XML,也就是我们通常使用的服务器端和客户端进行交互的数据传输介质。本文将介绍如何使用JSON做AJAX的数据传输介质,希望对大家有帮助。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
AJAX这个词语已经火爆一阵了,这个词语中的X就是表示XML,也就是我们通常使用的服务器端和客户端进行交互的数据传输介质。当然XML有着开放、平台无关性等当前我们很注重的几个方面的优势,而且无论在哪个方面都可以灵活的应用,甚至数据库都有采用XML的了(比如SQLSERVER和ORACLE等)。
当然,有优势并不一定代表在所有方面都OK,JSON-JavaScript Object Notation,一个也是最近比较流行的数据表示工具,在AJAX框架(比如DOJO等)中都有所应用,最近我也在我的权限系统中大量的使用了JSON作为前台JS和服务器进行数据库交互的平台。先看一个简单的例子:
比如我要从服务器端返回数据(2个属性,success和message,表示执行成功与否和返回的提示信息),那么使用XML就是如下表示:
<?xml version="1.0" encoding="GBK"?>
<Root>
<success>true</success>
<message><![CDATA[操作成功!]]></message>
</Root>
那么我们在客户端使用JS就应该如此来获取数据了,如下:
function(xmlHttp)
{
var xml = xmlHttp.responseXML; // 获取服务器端返回的XML数据流
var success = xml.getElementsByTagName("success")[0].firstChild.nodeValue;
var message = xml.getElementsByTagName("message")[0].firstChild.nodeValue;
……
}
我先不评论这两个代码,我们再看使用JSON如何表示,首先,在服务器端我们返回的字符串表示如下:
{"success":true,"message":"操作成功!"}
那么我们在客户端又该如何进行解析呢?看如下代码:
function(xmlHttp)
{
var val = xmlHttp.responseText; // 获取服务器端返回的文本流
var obj = ; // 利用eval函数将返回的文本流转换成JS对象
alert(obj.success); // 打印是否成功
alert(obj.message); // 打印服务器端返回的信息
}
看完上面的代码后,大家有什么想法呢?呵呵,是不是觉得第一种表示又简单,又直观呢?!而且从代码的量上看,使用JSON可以明显的减少客户端的JS编程量,而且在同等的数据要求下,JSON的表示法肯定是要比XML表示法的字节数要少(上面XML分别是108个字符,JSON是34个字符),可以看到差别是明显的,尤其是要表示的数据结构更加复杂和多的时候。
大家对JSON也有了初步的了解,我就从实际的使用角度来给大家讲讲JSON,当然,我这里不会原原本的照搬官方网站上的介绍(官方网站地址:)和图片等资源信息,这大家可以在baidu上一搜一大片,而且也可以在官方网站上了解什么是JSON。
我这里也给大家简单的说下,怎么表示JSON对象,我们直接在JS中表示就如下:
var obj = {
"a":"a1",
"b":"b1",
"c":"c1"
}
使用如上的表示就可以表示JS中的一个对象了,那么访问就很简单了,直接obj.a,obj.b就可以了。当然也可以嵌套表示的,即对象里再嵌入对象,如下:
var obj = {
"a":"a1",
"b":{
"b1":"b11",
"b2":"b22"
},
"c":"c1"
}
上面就表示了obj对象中嵌套了一个b对象,访问就按照层次来访问即可,比如obj.b.b1就可以得到值b11。可以看到使用JSON可以很方便的表示一个对象,而且JSON对象的表示法和JS的内置对象的表示是一样的,这样也就注定了使用eval函数来解析JSON字符串为对象时会比XML解析来的快,事实上也证明确实如此,大家可以使用一个XML和一个JSON来做个解析例子(当然要是大对象了)。
上面说的是我们直接在客户端中写JS对象,通常我们都会有应用是用来和服务器打交道的,就像我们文章最前面说的那样。那么我们在服务器端怎么来输出JSON字符串呢?不会是手动的一个个的加吧?呵,当然不是这样了,要是那样的话,这样介绍也就没必要了哈,在服务器端我使用的是JSON-LIB,这个大家可以从上进行和查看,包里总共也才20来个类和接口左右,是非常轻巧的一个JAR包。JSON-LIB依赖如下公用包:
jakarta commons-lang 2.3
jakarta commons-beanutils 1.7.0
jakarta commons-collections 3.2
jakarta commons-logging 1.1
ezmorph 1.0.1
JSON-LIB可以很容易的将一个实体JavaBean对象转换成一个JSON字符串形式,也可以从Map中获取值并进行转换,我们看一段简单的代码:
……
Map<String,Object> map = new HashMap<String,Object>();
map.put("a", "a1");
Map<String,String> tmp = new HashMap<String,String>();
tmp.put("b1", "b11");
tmp.put("b2", "b22");
map.put("b", tmp);
map.put("c", "c1");
JSONObject obj = JSONObject.fromMap(map);
System.out.println(obj);
……
我们运行这段代码,输出结果如下:
{"a":"a1","c":"c1","b":{"b1":"b11","b2":"b22"}}
可以看到输出结果和我们在上面表示的那个嵌套对象是一样的(只是顺序不一样而已,这个不影响),这样我们就可以很容易的将普通的Java对象转换成JSON对象了。这个JSON-LIB的API不多,也比较简单,相信大家多看看,然后自己写写摸索摸索就可以很容易的写出满足自己要求的JSON对象了。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn
文章转载自:网络转载面对“数字中国”建设和中国制造2025战略实施的机遇期,中车信息公司紧跟时代的步伐,以“集约化、专业化、标准化、精益化、一体化、平台化”为工作目标,大力推进信息服务、工业软件等核心产品及业务的发展。在慧都3D解决方案的实施下,清软英泰建成了多模型来源的综合轻量化显示平台、实现文件不失真的百倍压缩比、针对模型中的大模型文件,在展示平台上进行流畅展示,提升工作效率,优化了使用体验。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@pclwef.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢