`

[转]JSON 还是 XML?开发环境决定选择结果!

阅读更多
JSON 还是 XML?开发环境决定选择结果!
2010-03-25 17:03
数据要传输,就需要把数据表示出来。用什么格式来表示数据,这是个问题。
  JSON和XML都是非常成熟的结构化数据表示方法。大多有经验开发者都不愿意自己重新定义数据表示的格式,因为那样的确费力不讨好,毕竟很多人都看到了自己和天才之间的差距。但在选择数据的表示方法时,却是各执一词,为选择JSON还是XML争论不休。

  先简要介绍一下这两种数据表达方法:

  JSON:JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。(取自www.Json.org)

  XML: XML 全称是可扩展标记语言(EXtensible Markup Language),是一种类似与HTML的语言,是被设计用来描述数据的语言。在XML中没有预先定义的标签(tags,在html中就是类似与, 之类的东西);XML 是能够自解释(self describing)的语言;XML 使用DTD(Document Type Definition文档类型定义)来显示这些数据。软件都使用XML来保存配置信息,在您的机器上搜索一下,一定能找到不少扩展名为.xml的文件。

  以上只是从网上找的一些简单片段,如果您需要了解更多详细信息,请使用搜索引擎:)

  XML产生较早,这种清晰易读的结构化数据表示方法立刻风行天下,很多

  JSON是如何产生的,我在网上没有搜到这些资料,笔者猜测它也许是JavaScript的副产品。当初设计JavaScript的时候,可能设计人员想设计一个简单的结构化方式来表达JavaScript内的数据变量,于是就定义了JSON的语法,和JavaScript的其它语法定义混在一起,也没有人注意到它,以至于以前看了很多JavaScript的书籍都没有提到JSON。后来我听说JSON以后,以为也会为JavaScript提供一个函数库,谁知JavaScript天生就很“JSON”。

  在网上,有很多在XML和JSON之间的比较,看一下这些比较的内容,有助于我们加深了解它们,并做出更正确的选择。

  轻量级和重量级

  比较之一是轻/重量级的比较。JSON是轻量级的数据交换格式,言下之意,XML算是重量级的数据格式。这一点确实不错,可是重量级体现在哪些方面呢?何为轻、何为重?什么又算是重量级的应用呢?

  如果你只是要表达一个数据结构,把一组数据作为一个整体存放起来或用于传输,那么这就是一个轻量级的应用。无论你有多少数据,都只能算是轻量级的应用。你可以使用JSON,也可以使用XML。当数据量很大的时候,它们都一样的慢。别以为XML是重量级的就会比JSON快。

  那么XML的重量机体现在哪儿呢?事实上体现在解析上。XML设计了两种解析方式:DOM和SAX。DOM把一个XML整体解析成一个DOM对象,这一点和JSON把JSON文字解析成JSON对象是一样的。SAX是一个类似消息驱动的解析方法,不需要把整个文档都解析完就可以对解析出的内容进行处理。每当解析出一个对象时,都会通知到程序的处理代码以处理这个对象。程序也可以随时中止解析。这样,一个大的文档就可以逐步地、一点一点地展现出来。如果在网络上传输数据流,那么在传输的过程中,已传输的部分就已经被处理了。这一点,JSON是做不到的,至少目前的JSON程序组件并没有支持这种解析方法。

  所以,JSON和XML的轻/重量级的区别在于:JSON只提供了整体解析方案,而这种方法只在解析较少的数据时才能起到良好效果;而XML提供了对大规模数据的逐步解析方案,这种方案很适用于对大量数据的处理。

  而对于应用程序。只要整体数据可以一次性读取和写入的,都只能算是轻量级应用。所以还要依赖其它特征来选择JSON或XML。

  易用性,或开发复杂性

  有人很不喜欢DOM,认为用起来太麻烦,所以选择JSON。事实上使用不同的语言,不同支持库,代码的复杂性都不相同。而现在很多应用都是多语言的。比如基础服务器可能是用C++写的,可能有一个Java编写的WEB服务要和这个C++写的服务器交互,而WEB服务的客户端又要用JavaScript语言编写程序访问这个Java写的Web服务。

  JSON为许多种语言都提供了解析库。访问http://www.json.org/可以下对这些语言JSON支持库。

  XML的解析有点复杂。网上有一些开源的解析程序,但对于初学者,理解起来不是特别容易。Java语言的XML支持包还是很好用的,有点编程基础的人理解起来也不算太难。C/C++的XML解析也不算麻烦,可以使用tinyxml一类的库。笔者在Windows下开发程序时,习惯用MSXML库来解析、生成XML数据。当然,直接使用MSXML还是挺麻烦的,对其进行适当的包装可以事半功倍。

  所以,易用性不在于JSON或XML本身,而在于你要使用的语言和你所拥有的基础。如果你熟悉XML,没必要羡慕JSON的使用者更简单;反之,如果你一直在使用JSON,也别以为XML的使用真有那么笨重;如果你很好学,建议你都学习一下。

  笔者的选择

  在使用C++写Windows应用时,笔者用XML来管理配置文件,因为我对MSXML进行了包装,用起来得心应手。

  在写WEB应用时,服务端用Java,客户端使用JavaScript,这时我选择用JSON来传输数据,因为JavaScript天生就JSON,而Java的JSON库用起来也还算不错!(Java的JSON支持库除了Json.lib以外,还有一堆其它的库,都要下载才可以)

       备注: 本文装载自:天极网
分享到:
评论

相关推荐

    js下xml转json和json转xml

    在JavaScript(JS)环境中,XML(Extensible Markup Language)与JSON(JavaScript Object Notation)之间的转换是常见的数据处理任务。XML是一种结构化数据格式,常用于数据交换,而JSON则是轻量级的数据交换格式,...

    C#写的Json与Xml互转支持.net framework2.0以上组件Newtonsoft.Json.dll

    在.NET开发环境中,数据交换和序列化经常是关键任务,其中JSON和XML是最常见的两种格式。本文将深入探讨如何在C#中使用Newtonsoft.Json.dll库进行JSON与XML之间的转换,特别关注对.NET Framework 2.0及以上版本的...

    java json xml转换

    本文将详细探讨Java中JSON与XML的互转,以及如何在实际开发中运用这些技术。 标题:“java json xml转换” 描述:“java版的json与xml之间的转换的实例demo” JSON和XML各有优缺点。JSON以其简洁、易于阅读和生成...

    VB解析Json转换为Xml

    本篇将详细讲解如何在VB环境中将Json数据转换为Xml。 首先,要进行Json到Xml的转换,我们需要引入一个处理Json的库。在VB.NET中,可以使用内置的System.Web.Script.Serialization命名空间中的JavaScriptSerializer...

    JSON-lib框架,转换JSON、XML不再困难

    ### JSON-lib框架详解:转换JSON、XML不再困难 #### 一、概述 JSON-lib是一个用于Java平台的强大且灵活的...这对于开发基于Web的应用程序来说是非常重要的,因为JSON和XML是现代Web服务中最常用的两种数据交换格式。

    01.JsonToXml.zip

    本教程将详细讲解如何在Delphi环境中实现JSON与XML之间的转换,这对于软件开发,特别是涉及到跨平台数据交互的项目来说,是非常重要的技能。 标题"01.JsonToXml.zip"暗示了这是一个关于Delphi编程的压缩包,其中...

    jquery.json2xml.js和jquery.xml2json.js

    这样可以方便地将JSON数据发送到服务器,或者在需要XML结构的环境中使用。 ```javascript var json = { "person": { "name": "John", "age": 30, "city": "New York" } }; $.json2xml(json); ``` 而`jquery....

    json和xml互转.jar

    总的来说,"json和xml互转.jar"是一个实用的开发工具,旨在通过提供便捷的JSON到XML以及XML到JSON的转换服务,帮助开发者节省时间和精力,专注于他们的核心业务逻辑。随着JSON和XML在各种应用程序和API中的广泛应用...

    json报文与XML互转

    本文将深入讲解如何在Java环境中将Java对象与JSON报文和XML报文进行转换,并讨论两者之间的互转。 首先,JSON以其简洁和易于解析的特性,成为了现代Web API首选的数据交换格式。它基于JavaScript语法,允许我们以...

    Android中xml转json

    在Android开发中,XML(可扩展标记语言)和JSON(JavaScript Object Notation)都是常见的数据交换格式。XML因其结构化特性适用于复杂的文档存储,而JSON则以其轻量级、易于阅读和编写的特点广泛用于Web服务的数据...

    php xml 转json和array

    XML以其结构化和可扩展性在Web服务和数据存储中占据重要地位,而JSON则因其简洁性和易读性在前端开发中受到青睐。PHP作为一种常用的服务器端脚本语言,提供了处理XML和JSON的强大功能。本篇文章将详细探讨如何在PHP...

    Java XML转JSON

    在实际开发中,我们常常需要在两者之间进行转换,特别是在Java环境中。本篇将详细讲解如何在Java中实现XML到JSON的转换。 首先,我们需要引入转换工具库。Java社区中有多个库提供了XML到JSON的转换功能,例如...

    jQuery xml-to-json xml转JSON插件

    总之,jQuery xml-to-json插件为开发者提供了一种便捷的方式来在jQuery环境中处理XML数据,将其转换为JSON,从而简化前端的数据操作和呈现。通过学习和运用这个插件,可以提升项目的开发效率,同时增强前后端数据...

    Node.js-用于将XML转换为JSON和JSON到XML的Android库

    标题中的“Node.js-用于将XML转换为JSON和JSON到XML的Android库”指的是一个针对Android平台的开发库,该库允许开发者在Android应用中进行XML与JSON之间的转换。XML(Extensible Markup Language)是一种结构化数据...

    xml & json 转换工具

    在实际开发中,为了确保数据的准确性和一致性,需要考虑XML和JSON的一些特性差异,例如XML支持命名空间,而JSON没有;XML有属性和元素,JSON只有键值对。此外,还要处理XML的注释、处理指令等非数据内容。 总的来说...

    jquery xml转json插件

    总的来说,jQuery的XML to JSON插件是JavaScript开发者处理XML数据的强大工具,它简化了XML数据在浏览器端的处理流程,提升了开发效率。在实际项目中,配合jQuery和其他前端库,可以构建出高效且灵活的数据交互解决...

    XML to JSON and JSON to XML converter

    用户只需输入XML或JSON数据,工具会自动完成转换,并展示结果。这种工具对于跨平台、无需安装软件的场景非常实用。 在线转换工具通常基于JavaScript实现,它们通过前端处理用户输入的XML或JSON数据,然后调用相应的...

    java实现xml转json

    本文将深入讲解如何使用Java实现XML到JSON的转换,并提供相关的源码和Eclipse开发环境的配置。 首先,Java中没有内置的库直接支持XML到JSON的转换,但有许多第三方库可以帮助我们完成这个任务,如Jackson、Gson和...

    eclipse 集成 JSON2XML Tree Viewer

    Eclipse是一款广泛使用的集成开发环境(IDE),为开发者提供了丰富的插件支持,使得这样的转换变得轻松便捷。本篇文章将详细介绍如何在Eclipse中集成JSON2XML Tree Viewer插件,以及如何利用它将JSON文本转换为XML和...

    JS实现XML转JSON格式互转压缩包

    在处理XML数据时,可以利用"xmldom"来解析和操作XML,然后用"x2js"将其转换为JSON,以便在JavaScript环境中更便捷地处理。同样,当需要将JSON数据发送给服务器时,也可以使用"x2js"将JSON转换为XML格式。这样的工具...

Global site tag (gtag.js) - Google Analytics