什麼是JSON
JSON(Javascript Object Notation) 是一種輕量級的數據交換格式。易於人閱讀和編寫。同時也易於機器解析和生成。它基於Javascript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一個子集。JSON采用完全獨立於語言的文本格式,但是也使用了類似於C語言家族的習慣(包括C, C++, C#, Java, Javascript, Perl, Python等)。這些特性使JSON成為理想的數據交換語言。
JSON概念很簡單,就是服務器直接生成Javascript語句,客戶端獲取後直接用eval方法來獲得這個對象,這樣就可以省去解析XML的性損失。
使用XML表示:
復制代碼 代碼如下:
<items>
<item>
<id>1</id>
<author>Jackson</author>
<url>http://www.jb51.net</url>
<content>Welcome to Web.cn</content>
</item>
<item>
<id>2</id>
<author>Relkn</author>
<url>http://www.jb51.net</url>
<content>Web.cn關注互聯網新技術</content>
</item>
<item>
<id>3</id>
<author>Kvogend</author>
<url>http://www.jb51.net</url>
<content>jb51.net</content>
</item>
</items>
代碼:
復制代碼 代碼如下:
<items>
<item>
<id>1</id>
<author>Jackson</author>
<url>http://www.jb51.net</url>
<content>Welcome to Web.cn</content>
</item>
<item>
<id>2</id>
<author>Relkn</author>
<url>http://www.jb51.net</url>
<content>Web.cn關注互聯網新技術</content>
</item>
<item>
<id>3</id>
<author>Kvogend</author>
<url>http://www.jb51.net</url>
<content>jb51.net</content>
</item>
</items>
使用JSON:
復制代碼 代碼如下:
{items:[
{
id:1,
author:\"Jackson\",
url:\"http://www.jb51.net\",
content:\"Welcome to Web.cn\"
},
{
id:2,
author:\"Relkn\",
url:\"http://www.jb51.net\",
content:\"Web.cn關注互聯網新技術\"
},
{
id:3,
author:\"Kvogend\",
url:\"http://www.jb51.net\",
content:\"jb51.net\"
}
]};
代碼:
復制代碼 代碼如下:
{items:[
{
id:1,
author:\"Jackson\",
url:\"http://www.jb51.net\",
content:\"Welcome to Web.cn\"
},
{
id:2,
author:\"Relkn\",
url:\"http://www.jb51.net\",
content:\"Web.cn關注互聯網新技術\"
},
{
id:3,
author:\"Kvogend\",
url:\"http://www.jb51.net\",
content:\"jb51.net\"
}
]};
JSON不僅減少了解析XML解析帶來的性能問題和兼容性問題,而且對於Javascript來說非常容易使用,可以方便的通過遍歷數組以及訪問對象屬性來獲取數據,其可讀性也不錯,基本具備了結構化數據的性質。不得不說是一個很好的辦法,而且事實上google maps就沒有采用XML傳遞數據,而是采用了JSON方案。
JSON的另外一個優勢是"跨域性",例如你在www.jb51.net的網頁裡使用
<script type="text/javascript" src="" target="_blank">http://www.yyy.com/some.js">
是完全可行的,這就意味著你可以跨域傳遞信息。而使用XMLHttpRequest卻獲取不了跨域的信息,這是Javascript內部的安全性質所限制的。
JSON能完全取代XML嗎?當然不能,原因就在於XML的優勢:通用性。要使服務器端產生語法合格的Javascript代碼並不是很容易做到的,這主要發生在比較龐大的系統,服務器端和客戶端有不同的開發人員。它們必須協商對象的格式,這很容易造成錯誤。