揭开 JSON 的神秘面纱 ------【XML和JSON的异同】

JSON:JavaScript 对象表示法(JavaScript Object Notation)。 JSON 是存储和交换文本信息的语法。类似 XML, 但它比 XML 更小、更快,更易解析。
 
XML
XML (Extensible Markup Language) 指可扩展标记语言,它被设计用来传输和存储数据。
要表示一个object (指name-value pair的集合),最初可能会使用element作为object,每个key-value pair 用 attribute 表示
 
<student>
    <name>John</name>
    <age>10</age>
    <address>
        <country>China</country>
        <province>Guang Dong</province>
        <city>shanghai</city>
        <district>songbin</district>
    </address>
</student>

 

JSON

JavaScript (JavaScript Object Notation) 对象表示法。 JSON 是存储和交换文本信息的语法。类似 XML, 但它比 XML 更小、更快,更易解析。

{
    "student": {
      "name": "John",
      "age": "10",
      "address": {
        "country": "China",
        "province": "Guang Dong",
        "city": "shanghai",
        "district": "songbin"
      }
    }
}
 
其实,在AJAX诞生之初,它就被称为 XMLHTTP,直到2005年后,才被正式命名为AJAX。但是,随着时间的推移,AJAX的弊端也渐渐显露出来:
 
因为XML实现是基于DOM树实现的,而DOM在各种浏览器中的实现细节不尽相同,所以XML的跨浏览器兼容性并不好,
所以急需一种新的数据负载格式集成到HTML页面中以满足Ajax的要求!

如何才能将数据整合到HTML中又解决浏览器兼容性问题呢?答案就是:利用所有主流浏览器中的一种通用组件——JavaScript引擎。
这样只要创造一种JavaScript引擎能识别的数据格式就可以啦!
 
 
对比XML和JSON:
1. XML是element、attribute和element content。
   JSON是object、array、string、number、boolean(true/false)和null。

2. XML需要选择怎么处理element content的换行,
   JSON string则不须作 这个选择。

3. XML只有文字,没有预设的数字格式,
   JSON则有明确的number格式,这样在locale上也安全。

4. XML在编写时,第一行需要定义XML的版本,
   JSON不存在版本问题,格式永远不变!

5. XML映射数组没大问题,就是数组元素tag比较重复冗余。
   JSON 比较易读。JSON的true/false/null也能容易统一至一般编程语言的对应语义。

 

XML和JSON转换地址: http://www.bejson.com/xml2json/

 
 
 


 
【注意】:
1. JSON整体 需要用引号引起来是个字符串
2. JSON键名 需要用引号引起来
因为JS中存在许多的关键字和保留关键字,只要我们在所有的键名上加上双引号,JS引擎会将其识别为字符串,这样也就避免与JS中关键字冲突!
 
var jsonobj = `{
  "student": {
    "name": "John",
    "age": "10",
    "address": {
      "country": "China",
      "province": "Guang Dong",
      "city": "shanghai",
      "district": "songbin"
    }
  }
}`

var result = JSON.parse(jsonobj)
document.write(result) // 此时网页中会输出: [object Object]

【注意】:

当我们要把数据展示到UI界面上时,必须先将 JS 对象转化为 JSON 对象(字符串),这个过程又被称为“序列化”

序列化是指把对象转换为字节序列的过程,而反序列化是指把字节序列恢复为对象的过程

 

posted @ 2019-12-17 21:40  牧羊狼  阅读(212)  评论(0编辑  收藏  举报