Json

定义:轻量级的数据交换格式,用来存储和交换文本信息,类似于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 }

]

}

posted @ 2012-08-09 14:30  拾荒者の  阅读(257)  评论(0编辑  收藏  举报