JSON是什麼?
JSON是JavaScript Object Notation(JavaScript物件表示法)的縮寫。簡單來說,就是用JavaScript表達陣列或物件的語法,做為傳遞物件訊息的語法。而由於這樣的語法也應該能夠輕易地被JavaScript所處理,JSON可以方便且快速地使用字串傳遞物件資料。
JSON只使用幾種JavaScript的型態來進行表記:Number、Boolean、String、Object、Array和null。講這麼多不如來舉個例子好了。以下是一個合理的JSON字串:
如 果你有過JavaScript的基礎,應該可以馬上看到JSON中物件({}括起來的)以及陣列([]括起來的)上的語法以及其他型態的語法上是和 JavaScript相同的。但要注意的是在JSON中,字串只允許用雙引號括起,而定義物件中的元素名稱時,其名稱也要使用雙引號標示。這樣的限制讓語 法變得比較一致 :)
不安全的JSON使用法
假如我把以上的JSON字串存在一個叫做json_text的變數中,而我想要讀取其中的內容,該怎麼辦呢?也許你會想到要用JavaScript的eval()(MSDN/MDC):
var myObject = eval(
"(" + json_text +
")");
// 這樣一來, myObject.users[1].name 就是 "doggy"(看一下前面的JSON吧)!
這樣子做是可行的,但是問題是這樣的語法極度不安全。原因在於eval()會乖乖執行那個字串字串裏頭的所有程式碼,如果對方使用奇怪的語法來攻擊網站(像是用document.write幫網頁加料),使用eval()會變得非常難以防禦。
原生的JSON支援
這時來切入正題--有關IE8對JSON的支援。
由於JSON在使用eval()下可能會發生若干的問題,在ECMAScript 3.1正在修訂的草案中,有關解析/編碼JSON的標準原生函數被提了出來,所以應該會成為標準。主要而言有兩個:
-
JSON.parse()→安全地將JSON字串轉為物件
-
JSON.stringify()→安全地將物件轉為JSON字串
請容許我跳過複雜一點的例子和toJSON()的介紹,來看非常簡單的原生JSON處理。一樣,json_string是指剛剛最上面的JSON語法舉例:
可以看得出來,在使用了原生的JSON支援之後,不但可以高枕無憂地接收AJAX下傳來的JSON訊息,還可以輕鬆地用一行程式碼,把物件轉換成為一個JSON字串!跟使用XML比起來,JSON這樣實在是十分地有吸引力!(不過事實上XML也不甘示弱,他們也有E4X XD)
頭大時間:瀏覽器支援
又回到了頭大的時間:瀏覽器支援問題。這樣使用JSON看起來很美好,可是來看看瀏覽器的支援度吧:
等等,沒了?沒錯,沒了。 XD 其他瀏覽器都還沒有開始打算要動這一塊的樣子。
那該怎麼辦呢?過去在沒有JSON原生支援的時代,有一個廣為被使用的編解碼JSON腳本,也就是json.org的json2.js(捲到最下面有原始碼)。而更讓人雀躍的是,json2.js已經將語法修正為和ECMAScript提議中的新標準一致的新語法了。所以,我們可以使用json2.js和原生JSON相配合的方法來達到最大的瀏覽器支援:
<script type=
"text/javascript" src=
"json2.js"></script>
分享到:
相关推荐
一、JSON是什么? 有一种叫做JSON (JavaScript Object Notation) 的轻量级数据交换格式能够替代XML的工作。它就是JSON。 数据格式比较简单, 易于读写, 格式都是压缩的, 占用带宽小。 易于解析这种语言, 客户端...
shuyuan_json.zip
net.sf.json需要的jar
net.sf.json依赖jar包,其中包括: commons-beanutils-1.7.0.jar commons-collections-3.1.jar commons-lang-2.5.jar commons-logging.jar ezmorph-1.0.3.jar json-lib-2.4-jdk15.jar
本文详细总结了ajax和json的使用方法和详细示例。
直接复制到Notepad++ 安装目录下的\plugins文件夹即可 - 使用的时候全选json部分字符 - 在工具栏选择 -插件 --JSONviewer ---Format JSON 即可转换
json的jar包及运行必须的jar并包含json.js文件
_menu.json
非常好的JSON教程,一看就懂,非常好的JSON教程,一看就懂非常好的JSON教程,一看就懂
json转换json schema
json文件是什么+为什么使用json文件+如何使用json文件
output.json
JSON Machine是一个快速,高效且易于使用的JSON流解析器
最好用的c++json库 nlohmann json源代码最好用的c++json库 nlohmann json源代码最好用的c++json库 nlohmann json源代码最好用的c++json库 nlohmann json源代码最好用的c++json库 nlohmann json源代码最好用的c++json...
JSON 是一种轻量级的数据交换格式。该文档详细介绍了JSON
json定义json定义json定义json定义json定义json定义json定义json定义json定义json定义
json与labview常见相互转化,能解决大多json问题
json实例json实例json实例json实例json实例json实例json实例json实例
实现了java和json的互相转化!!里面有已经打包好的类包,还有示例!!!
MFC使用JSON11将json,包括json字符串转对象,对象转json字符串