定义:轻量级的数据交换格式,用来存储和交换文本信息,类似于XML,但又比XML轻便简单,更易解析,更小是javascript对象的一个子集。
名字解析:javascript 对象 表示法。
Json独立于语言,在任何一种语言之中都能够使用,解析。具有描述性,更容易理解。
XML同样是用于数据的存储和交换的一种文件格式。
不同:
Json:更小,使用javascript中的eval函数直接可以解析json字符串,包含数组,读写速度快,没有结束标签,不实用保留字,添加删除节点比较方便。
看如下两种不同格式的数据表现方式:
描述一个学生用户的基本信息:
XML方式:
<?xml version="1.0" encoding="utf-8"?>
<stuinfo>
<name>mmcai</name>
<sid>18</sid>
<uid>20</uid>
<tel>13588282838</tel>
<cousgroup>
<course>语文</course>
<course>数学</course>
<course>英语</course>
</cousgroup>
<gradegroup>
<grade>100</grade>
<grade>200</grade>
<grade>30</grade>
</gradegroup>
</stuinfo>
JSON格式:
{
sid:18, //学校ID
uid:20, //用户ID
name:'mmcai',//姓名
course:['语文','数学','英语'],//科目
grade:[100,200,30],//成绩
tel:13588282838,//联系电话
}
1、仅仅从内容的大小上面,我们就能看到json更加简单,所占字节比较小。这只是一个学生的信息,文件大小也许不明显,但如果比对全班学生的话,他们之间的大小就会比较可观。
2、节点查找的时候XML需要使用XML DOM的方法去查找,需要使用document.getElementsByTagName,document.getElementByName这么长的语法然后还要进行遍历再使用document.getElementsByTagName获取内容,比较琐碎,繁杂。
JSON我们就可以var data = eval(“(“+jsonString+”)”);然后像我们平常使用js对象的那种方式直接取得我们想要的值。例如:data.name就能获取到“名字”;XML中需要
Document.getElementsByTagName(“stuinfo”)[0]. childNodes[0].nodeValue这样才能获取得到,这些还都是在我们把XML字符串解析的前提下才能这样操作的。
XML:使用XML DOM进行解析XML字符串,使用变量存储读取值。
JSON有自我描述性,纯文本,有层级结构,AJAX中文本数据交换。可以通过javascript进行解析。
数据用名称和值进行描述,使用逗号分隔,大括号表示对象,中括号表示数组。
Json中的值可以是:数组,字符串,布尔值,数组,对象,null。
JSON 文件
- JSON 文件的文件类型是 ".json"
- JSON 文本的 MIME 类型是 "application/json"。
Json的用法:
JSON 最常见的用法之一,是从 web 服务器上读取 JSON 数据(作为文件或作为 HttpRequest),将 JSON 数据转换为 JavaScript 对象,然后在网页中使用该数据。
eval() 函数使用的是 JavaScript 编译器,可解析 JSON 文本,然后生成 JavaScript 对象。必须把文本包围在括号中,这样才能避免语法错误:
var obj = eval ("(" + txt + ")");
Json格式的一组数据例子:
例子一:普通json
{
Name:’mmcai’,
Age:’18’,
Sex:’man’,
Worker:’IT’
}
复杂一点的json
{
one:{man:58,women:99},
two:{man:99,women:18},
three:{man:108,women:36}
}
包含数组的json对象:
{
Data:[
{name:mmcai,age:18,sex:man,fav:money},
{ name:mmcai,age:18,sex:man,fav:money },
{ name:mmcai,age:18,sex:man,fav:money }
]
}