以后这种总结性的文章,我都会先给出结论,然后罗列基础知识进一步解释结论。

conclusion:XML和JSON的区别

1) 数据体积方面。
JSON相对于XML来讲,数据的体积小,传递的速度更快些。
2)数据交互方面。
JSON与JavaScript的交互更加方便,更容易解析处理,更好的数据交互。
3)数据描述方面。
JSON对数据的描述性比XML较差。
4)传输速度方面。
JSON的速度要远远快于XML。

详细解释

XML存储数据的弊端:

1)太多表示结构的标签造成字节浪费;
2)XML的解析需要额外代码,并且不同的XML文档需要的解析代码不同,越复杂的文档,解析代码也越复杂;把来自JS的数据序列化为XML数据更为复杂,而且不能出错;同时,串行化代码也是不可重用的。
Example:

<person>
    <firstName>John</firstName>
    <lastName>Doe</lastName>
    <age>30</age>
</person>

解析:

var personElement = document.querySelector("person");
var firstName = personElement.querySelector("firstName").innerHTML;
var lastName = personElement.querySelector("lastName").innerHTML;
var age = personElement.querySelector("age").innerHTML;
var person = {
    firstName : firstName,
    lastName: lastName,
    age: age
};

JSON

JSON只存储有用信息,没有标签,因此比XML体积小,这加快了传输速度;
JS数据的序列化和JSON解析很简单,主流浏览器支持JSON.stringify()和JSON.parse()方法。

Example:

<script type="text/javascript">
    var person = {
      firstName: "John",
      lastName: "Doe",
      age: 30
    };
    var json = JSON.stringify(person);//序列化
    alert(json);//{"firstName":"John","lastName":"Doe","age":30}
    var person=JSON.parse(json);//JSON解析
    alert(person.firstName);//John
  </script>

补充:

JSON一般用来表示三种数据:数组、对象、基本数据类型。
基本数据类型:null/false/true/number/string,和JS的区别在于string必须用双引号包围,其他三种数据类型和JS一样不用引号。
对象:

var person = {
    firstName: "John",
    lastName: "Doe",
    age: 30
};
表示成JSON:
{
"firstName": "John",
"lastName": "Doe",
"age": 30
}

数组:

var values = ["John", 30, false, null];

表示成JSON:

["John", 30, false, null]

zhangding
358 声望23 粉丝

JavaScript+React+Redux