回答
JSON是共享數據(通常在瀏覽器和服務器之間)的一種方式。
的JavaScript允許兩種方式來存儲值的集合:
//arrays:
[value, value, value]
//objects:
{key:value, key:value, key:value}
在某些時候,被稱爲道格意識到,這通常是最有效的將數據發送給JavaScript已經建立像對象的大師。 [而不是PHP發送逗號分隔的字符串,後數據,XML甚至HTML,所有這些都必須經過JavaScript精心分析]。
所以他把這個想法稱爲JSON,爲它寫了一個規範,並且標準誕生了。
例如,假設您的login.php腳本應該返回的用戶名,約佔總帖子,和日以來登記:
//XML
"<xml..><details>\
<user>Jim</user><posts>239</posts><since>Jan09</since>\
</details>"
//POSTData
"user=Jim&posts=239&since=Jan09"
//JSON
"{user:'Jim', posts:239, since:'Jan09'}"
最後一個可以通過JS(使用eval
)輕鬆解析,細節可以直觀地使用:
var user = details.user;
編輯:
有人正確地指出,要有效的JSON,所有的字符串必須用雙引號。 這樣做的目的是爲了防止JS在保留關鍵字上出現cro(聲(在JS中不能使用某些詞,如class
,除非它們被引用,因此不能使用{class:'mike'}
)。
還應該指出的是,PHP 5.2 +具有可用於創建或JSON解析功能:
3210的json_decode
功能只會工作,如果JSON是有效的,所以有時候很重要讓這些雙引號正確。
JSON是創建數據結構的Javascript源代碼。
它基本上是一種用文本描述對象的方式 - 一種基於文本的序列化格式。然而,它的美妙之處在於它也只是普通的JavaScript。 JavaScript的語法允許對象以一種非常簡潔的格式進行初始化,並且該格式在其他語言中也很容易生成/解析。
所以,你在JavaScript中獲得「內置」反序列化(即你可以解釋文本代碼),沒有額外的庫,和其他平臺可以創建它,通常有一個圖書館。 (通常爲Web服務器將生成JSON的瀏覽器來解釋。)
這是假設你完全信任你的數據源,當然 - 執行任意文本代碼是從安全角度來看,相當危險。
+1提及它主要是一種數據格式。 – Gumbo 2009-11-08 10:50:07
JSON是聲明數據結構的Javascript源代碼,通常由Web服務器發送到瀏覽器。瀏覽器通過普通的JavaScript解析器運行代碼,並彈出一個數據結構。
一個JavaScript聲明可能看起來像:
var myvar = {"column1": "valuie1"};
^^^^^^^^^^^^^^^^^^^^^^
的部分與^^^了後來被稱爲JSON下劃線。
所以在早期,一些JavaScript將抓住從服務器的文本,並對其進行分析,如:
var myvar = eval('(' + textfromserver + ')');
由於EVAL是危險的,它現在更常用,如:
var myObject = JSON.parse(myJSONtext);
這是一個黑客這麼多人認爲有用,他們把它作爲一個標準。有關更詳盡的解釋,請參閱this wikepedia page。
我會盡量簡化。如果您完全熟悉XML,那麼它就像XML原則上一樣,它以易於閱讀的方式爲人類和程序存儲數據。它被標記爲「數據交換格式」,因爲您將看到它用作在一個程序與另一個程序之間移動數據的中介。
例如,您可能有某個數據庫,您希望其他人從他們自己的程序中獲取信息並使用它們。您可以通過編寫某種JSON圖層來限制他們的訪問,而不是讓他們完全訪問數據庫。然後人們可以像訪問RSS源一樣訪問JSON。真實的例子:雅虎爲他們的搜索引擎提供了一個JSON層,以便人們可以編寫能夠運行雅虎搜索並將結果直接發送到桌面小部件的桌面小部件(或其他任何東西)。
使用諸如JSON之類的醜陋的替代方法可能是讓程序獲取網頁的HTML內容並以某種方式找到所需的信息。 (如果網站的HTML佈局發生變化,則必須更改程序。)
如果你想看到的東西幾乎做到觀看這部影片,這表明JSON Click here to see the JSON video
JSON(JavaScript對象符號)是一個簡單的數據交換格式,它可以幫助喜歡的Servlet,JSP JavaScript和服務器端技術之間進行通信, WCF,ASP.Net等。
JSON的格式如下所示。以下格式表示具有「CustomerCode」和「CustomerName」屬性的「Customer」對象。
![{"CustomerCode":"1001","CustomerName":"Shiv"}][2]
現在這種格式可以很容易地通過JavaScript的消耗,並且在到javascript對象變換。看看上面的圖,我們已經提供了JSON到JavaScript變量,你可以看到一個javascript對象是如何用「CustomerCode」和「CustomerName」屬性進行評估的。
如果你看一下網絡架構,它有兩個部分瀏覽器和服務器。在瀏覽器端Javascript是最突出和最好的語言,而在服務器端你有不同的技術,如JSP,ASP.NET,PHP等。
所以如果服務器端技術發出JSON格式,可以很容易地轉換在JavaScript對象,這將真正緩解多種服務器端技術和JavaScript語言之間的通信。
JSON(JavaScript Object Notation)是一個輕量級格式,用於數據交換。它也是JavaScript的Object Notation的一個子集(objects
用JavaScript構建的方式)。
JSON是一種以這種方式序列化的方式,即它成爲JavaScript代碼。在執行時(使用eval或其他方式),此代碼將創建並返回一個JavaScript對象,其中包含您序列化的數據。這是可用的,因爲JavaScript允許以下語法:
var MyArray = [ 1, 2, 3, 4]; // MyArray is now an array with 4 elements
var MyObject = {
'StringProperty' : 'Value',
'IntProperty' : 12,
'ArrayProperty' : [ 1, 2, 3],
'ObjectProperty' : { 'SubObjectProperty': 'SomeValue' }
}; // MyObject is now an object with property values set.
您可以將其用於多種目的。首先,將數據從服務器後端傳遞到JavaScript代碼是一種很好的方式。因此,這在AJAX中經常使用。
您也可以將其用作獨立的序列化機制,它比XML更簡單,佔用的空間更少。有許多庫允許您使用JSON序列化和反序列化各種編程語言的對象。
這是一個非常快速和簡潔的文章。 http://secretgeek.net/json_3mins.asp
(日Thnx到MSON,Vilx)
- 1. Android - 你能解釋爲什麼你可以刪除代碼嗎?
- 2. 有什麼區別?你能解釋一下這個語法嗎?
- 3. 你能解釋爲什麼這個javascript不正確嗎?
- 4. 數組:你能解釋這行代碼在做什麼嗎?
- 5. 你能解釋爲什麼這不起作用嗎?
- 6. 你能解釋爲什麼這個jQuery代碼有效嗎?
- 7. 你能解釋爲什麼DirectoryInfo.GetFiles會產生這個IOException嗎?
- 8. 緩慢的MongoDB查詢:你能解釋爲什麼嗎?
- 9. 你能解釋一下(數學計算)手勢例子(Levenshtein)嗎?
- 10. 什麼是QueryDSL中的根路徑?你能用一個例子來解釋嗎?
- 11. 你能解釋一下app引擎的上下文界面是什麼嗎?
- 12. 你能解釋一下Azure訂閱嗎?
- 13. 你能解釋一下這個System.Collections.Generic.KeyNotFoundException嗎?
- 14. View.OnClickListener,你能解釋一下嗎?
- 15. 你能解釋Context設計模式嗎?
- 16. 你能解釋lambda表達式嗎?
- 17. 你能解釋下面的輸出嗎?
- 18. 你能解釋這個錯誤嗎?
- 19. 你能解釋這個SQL查詢嗎?
- 20. 你能解釋一下嗎?做?
- 21. 你能解釋這個Typescript片段嗎?
- 22. Django - 你能解釋一下嗎?
- 23. 你能解釋一下代碼嗎?
- 24. 你能解釋一下遞歸嗎?
- 25. 你能解釋這個SQL注入嗎?
- 26. 新的android - 你能解釋什麼是4字節的內存邊界
- 27. 什麼是動態規劃的新手解釋?
- 28. 你能解釋爲什麼綁定不能用於ItemsControl的DisplayMemberPath嗎?
- 29. 你能幫我理解可可是什麼嗎?
- 30. 有人能更好地解釋nHibernate中的'Projections'是什麼嗎?
這有什麼錯上http://json.org/的描寫的特徵? – tangens 2009-11-08 09:45:13
嘗試用那裏提出的那些...它有4個網站,所有的描述和初學者...首先自己練習並閱讀那些 – 2009-11-08 09:58:20
JavaScript Object Notation – dlamblin 2009-11-08 10:56:59