加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

XML与JSON的比较

发布时间:2020-12-16 09:10:50 所属栏目:百科 来源:网络整理
导读:简介 XML(eXtensible Markup Language,可扩展标记语言),是一种标记语言。XML是从SGML(The Standard Generalized Markup Language,标准通用标记语言)中简化修改出来的。XML被设计用来传输和存储数据。 JSON(JavaScript Object Notation)是一种轻量级的数据

简介

XML(eXtensible Markup Language,可扩展标记语言),是一种标记语言。XML是从SGML(The Standard Generalized Markup Language,标准通用标记语言)中简化修改出来的。XML被设计用来传输和存储数据。
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器解析和生成。它是基于JavaScript Programming Language,Standard ECMA-262 3rd Edition的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C,C++,C#,Java,JavaScript,Perl,Python等)。这些特性使JSON成为理想的数据交换语言。

JSON具有以下这些形式:
对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。
数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。
值(value)可以是双引号括起来的字符串(string)、数值(number)、true、false、 null、对象(object)或者数组(array)。这些结构可以嵌套。

XML与JSON的对比

两者都是文本表示的数据格式,可以跨平台、跨系统交换数据。 XML适合标记文档,但是 JSON是数据交互的理想格式
两者最大的不同在于,XML是一个完整的标记语言,而JSON不是。XML利用标记语言的特性提供了绝佳的延展性(如XPath),在数据存储,扩展及高级检索方面优势明显,而JSON则由于比XML更加小巧,以及浏览器的内建快速解析支持,使得其更适用于网络数据传输领域。
就可读性而言,两者都具备很好的可读性,但XML文档的可读性更高
就数据表示和传输性能而言,JSON明显比XML简洁,格式简单,占用带宽少

示例

示例1

用XML格式表示中国部分省市数据:
<?xml version="1.0" encoding="utf-8" ?>
<country>
  <name>中国</name>
  <province>
    <name>黑龙江</name>
    <citys>
      <city>哈尔滨</city>
      <city>大庆</city>
    </citys>    
  </province>
  <province>
    <name>广东</name>
    <citys>
      <city>广州</city>
      <city>深圳</city>
      <city>珠海</city>
    </citys>   
  </province>
</country>
用JSON格式表示中国部分省市数据:
var country =
{
    name: "中国",provinces: [
        { name: "黑龙江",citys: { city: ["哈尔滨","大庆"]} },{ name: "广东",citys: { city: ["广州","深圳","珠海"]} }
    ]
}

示例2

用XML格式表示地址簿:
<?xml version='1.0' encoding='UTF-8'?>
<card>
    <fullname>Sean Kelly</fullname>
    <org>SK Consulting</org>
    <emailaddrs>
        <address type='work'>kelly@seankelly.biz</address>
        <address type='home' pref='1'>kelly@seankelly.tv</address>
    </emailaddrs>
    <telephones>
        <tel type='work' pref='1'>+1 214 555 1212</tel>
        <tel type='fax'>+1 214 555 1213</tel>
        <tel type='mobile'>+1 214 555 1214</tel>
    </telephones>
    <addresses>
        <address type='work' format='us'>1234 Main StnSpringfield,TX 78080-1216</address>
        <address type='home' format='us'>5678 Main StnSpringfield,TX 78080-1316</address>
    </addresses>
    <urls>
       <address type='work'>http://seankelly.biz/</address>
       <address type='home'>http://seankelly.tv/</address>
    </urls>
</card>
用JSON格式表示地址簿:
var card =
{
   "fullname": "Sean Kelly","org": "SK Consulting","emailaddrs": [
      {"type": "work","value": "kelly@seankelly.biz"},{"type": "home","pref": 1,"value": "kelly@seankelly.tv"}
   ],"telephones": [
      {"type": "work","value": "+1 214 555 1212"},{"type": "fax","value": "+1 214 555 1213"},{"type": "mobile","value": "+1 214 555 1214"}
   ],"addresses": [
      {"type": "work","format": "us","value": "1234 Main StnSpringfield,TX 78080-1216"},"value": "5678 Main StnSpringfield,TX 78080-1316"}
   ],"urls": [
      {"type": "work","value": "http://seankelly.biz/"},"value": "http://seankelly.tv/"}
   ]
}

主要参考博客:
http://www.cnblogs.com/SanMaoSpace/p/3139186.html
http://www.cnblogs.com/lostyue/archive/2012/04/27/2472956.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读