`
ferreousbox
  • 浏览: 287474 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

使用JSON取代XML做AJAX的数据传输介质

    博客分类:
  • AJAX
阅读更多

    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('(' + val + ')'); // 利用eval函数将返回的文本流转换成JS对象
    alert(obj.success); // 打印是否成功
    alert(obj.message); // 打印服务器端返回的信息
}

    看完上面的代码后,大家有什么想法呢?呵呵,是不是觉得第一种表示又简单,又直观呢?!而且从代码的量上看,使用JSON可以明显的减少客户端的JS编程量,而且在同等的数据要求下,JSON的表示法肯定是要比XML表示法的字节数要少(上面XML分别是108个字符,JSON是34个字符),可以看到差别是明显的,尤其是要表示的数据结构更加复杂和多的时候。

    大家对JSON也有了初步的了解,我就从实际的使用角度来给大家讲讲JSON,当然,我这里不会原原本的照搬官方网站上的介绍(官方网站地址:http://www.json.org/)和图片等资源信息,这大家可以在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,这个大家可以从http://json-lib.sourceforge.net/上进行下载和查看,包里总共也才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对象了~~ 

  • 4
    0
    分享到:
    评论
    4 楼 di1984HIT 2014-01-08  
    写的很好。
    3 楼 fcoffee 2008-08-08  
    json一样是平台无关甚至语言无关的, 它只是使用了和javascript一样的语法, 但并等于它只能用于javascript, 在json.org网站上有很多语言版本的json解析器.
    2 楼 shanghui_12 2008-08-05  
    恩,如果不考虑平台无关性,而是特定的应用,使用JSON比xml好多了
    1 楼 chris_in 2008-08-04  
    写的这么好,没人顶?,不错,学习了!

    相关推荐

      Ajax中使用JSON传输数据

      本篇文章将深入探讨在Ajax中如何使用JSON来传输数据,以及涉及到的相关工具和源码。 首先,让我们理解JSON的基本概念。JSON是一种基于JavaScript语法的数据表示方式,它可以表示数组、对象、数值、字符串等基本数据...

      JSON介绍-Ajax数据传输形式

      介绍了AJax中传输数据的一种新形式:JSON

      掌握Ajax使用 JSON 进行数据传输

      掌握Ajax使用 JSON 进行数据传输 掌握Ajax使用 JSON 进行数据传输 掌握Ajax使用 JSON 进行数据传输

      2020年 json,xml,ajax封装.rar

      5. AJAX与JSON结合的应用:如何在AJAX请求中使用JSON作为数据格式,实现高效的数据通信,提升用户体验。 6. 实战案例:可能包含一些示例代码或项目,演示如何在实际开发中运用这些技术,例如构建一个动态加载数据的...

      jquery.json2xml.js和jquery.xml2json.js

      JSON(JavaScript Object Notation)和XML(eXtensible Markup Language)是两种广泛使用的数据交换格式,它们在Web服务和应用程序之间传输数据时起到至关重要的作用。jQuery是一个流行的JavaScript库,它简化了DOM...

      用JSON替换XML

      Ajax(Asynchronous JavaScript and XML)最初是以XML作为数据交换格式,但后来,随着JSON的普及,许多开发者转而使用JSON,因为其提供了更好的性能和更简单的实现方式。 ### JSON资源 对于想要学习或使用JSON的...

      04课 json,xml,ajax封装.rar

      此外,还会讲解XML解析和生成,以及如何在AJAX中选择合适的数据格式(JSON或XML)。 为了封装这些技术,开发者通常会创建自己的函数库或者使用现有的库,如jQuery的$.ajax()方法,它简化了AJAX操作。课程可能还会...

      C++结构体和json/xml之间互相转换

      在现代软件开发中,数据交换通常涉及JSON(JavaScript Object Notation)和XML(eXtensible Markup Language)这两种格式,它们是网络传输数据的标准格式。JSON因其简洁和易读性而广泛应用于API接口,而XML则在更...

      Xml2Json and Json2Xml

      XML(Extensible Markup Language)和JSON(JavaScript Object Notation)是两种常见的数据交换格式,广泛应用于Web服务和数据传输。XML是一种结构化语言,用于描述数据,而JSON更简洁,通常用于JavaScript应用程序...

      json2xml.zip

      JSON因其简洁、易读的特性,通常用于前端与后端之间的数据传输,而XML则在更复杂的结构化数据场景中被青睐,如电子文档、配置文件等。 "json2xml.zip"是一个包含将JSON转换为XML的代码的压缩文件。这个工具或库可能...

      json和xml比较

      就数据表示和传输性能而言,JSON 明显比 XML 简洁,格式简单,占用带宽少。JSON 的数据表示简洁、紧凑,非常适合网络传输,减少了数据的传输量和时间。 安全性 就安全性而言,由于大部分 Javascript 库都是使用 ...

      ajax+json实例

      结合JSON(JavaScript Object Notation)作为数据交换格式,可以实现高效、轻量级的数据传输,尤其在.NET框架下,两者结合提供了强大的功能。 **一、AJAX基础** AJAX基于JavaScript,利用XMLHttpRequest对象作为...

      01.JsonToXml.zip

      JSON通常因其简洁和易于解析而被广泛用于网络API的数据传输,而XML则常用于更为复杂的文档结构和数据存储。 标签"Delphi json转xml json处理"进一步确认了这个资源是针对Delphi开发者,提供JSON到XML的转换功能,...

      XML to JSON and JSON to XML converter

      XML是一种结构化标记语言,适用于描述复杂的数据结构,而JSON则以更简洁的格式来表示数据,通常用于Web服务之间的数据传输。本文将深入探讨XML与JSON之间的转换,并介绍相关工具和技术。 XML和JSON各有优势。XML...

      php-curl+ajax+json数据传输2.0版本

      `AJAX`(Asynchronous JavaScript and XML)是一种创建动态网页的技术,允许页面在不重新加载整个页面的情况下与服务器交换数据并更新部分网页内容。它主要依赖于JavaScript的XMLHttpRequest对象。在传统的网页中,...

      json自动转换成xml的json包

      JSON(JavaScript Object Notation)和XML(eXtensible Markup Language)是两种广泛使用的数据交换格式,它们在互联网上用于传递和存储结构化数据。JSON以其简洁和易于阅读的特性,通常被用作轻量级的数据交换格式...

      json-servlet-ajax

      在Web开发中,JSON常用于后端服务器与前端客户端之间的数据交互,尤其是在AJAX(Asynchronous JavaScript and XML)技术中。 标题“json-servlet-ajax”暗示了我们讨论的重点是关于JSON如何在Servlet和AJAX之间进行...

      JSON-XML相关jar包

      JSON(JavaScript Object Notation)和XML(eXtensible Markup Language)是两种广泛使用的数据交换格式,它们在Web服务、应用程序通信以及数据存储等领域扮演着重要角色。JSON因其简洁、易读的特性,在现代Web开发...

      json与xml使用

      JSON(JavaScript Object Notation)和XML(eXtensible Markup Language)是两种广泛用于数据交换的格式,尤其在Web服务和移动应用开发中。本文将深入探讨这两种格式在安卓平台上的使用及其优缺点。 首先,让我们...

    Global site tag (gtag.js) - Google Analytics