2012-08-22 114 views
0
var foo = { "a": 1, "b": true, c: [1, true, "2"] }; 

請糾正我,如果我在這裏錯了,但據我所知,這是一個有效的json對象。但它也是一個JavaScript對象。JSON和JavaScript對象

是基於JavaScript語言的JSON對象嗎?或者是周圍的其他方式?

感謝

基於JavaScript語言
+3

'JSON'表示JavaScript對象表示法。這應該可以回答你的問題,也意味着先發生了什麼。 – Imp

+0

谷歌是你的朋友。一個簡單的指南:http://docs.1060.org/docs/3.1.0/book/discovered/doc_mod_json_guide.html – rgamber

回答

1

「請糾正我,如果我錯了這裏,但據我所知,這是一個有效的JSON對象」

「但它也是一個JavaScript對象。」

是的。

UPDATE:我原來的答覆仍然低於,但我錯過了這是有益的@badunk

字符串

{ "a": 1, "b": true, c: [1, true, "2"] } 

是JSON指出了一個重要的語法錯誤。 JSON約爲表示法 - 哪些符號構成有效語法,以及它們在處理時的含義。

您的代碼:

var foo = { "a": 1, "b": true, c: [1, true, "2"] }; 

..是一段JavaScript。當這個被分析和處理時,賦值右邊的部分被稱爲javascript對象文字。也就是說,一段表示文字對象的javascript。但是因爲它實際上是一個對象,所以它不再是符號 - 它被處理成運行時數據結構。

當您談論數據交換時(例如通過HTTP),術語JSON很有用。如果HTTP響應像這樣通過一個sting:

{ "a": 1, "b": true, c: [1, true, "2"] } 

它是有效的JSON。 如果這將被解釋,它會導致一個javascript對象。

1

JSON網站

JSON(JavaScript對象符號)是輕量級的數據交換格式。人類閱讀和寫作很容易。機器解析和生成很容易。它基於JavaScript編程語言的一個子集。

所以你的問題的答案是肯定的。

1

有人可能會爭辯說,沒有像「JSON對象」這樣的東西(http://benalman.com/news/2010/03/theres-no-such-thing-as-a-json/)。

上面的代碼實際上是一個對象字面值。另一方面,JSON只是一個對象的字符串表示,即它是一個序列化。

1

@Roland指出,聲明本身是一個JavaScript表達式,而不是JSON。忽略了,然而,評估是否下面是JSON:

{ "a": 1, "b": true, c: [1, true, "2"] } 

我這裏的其他答案不同意,這不是有效的JSON。嚴格地說,屬性必須用引號引起來。看到SO帖子here。這是正確的JSON:

{ "a": 1, "b": true, "c": [1, true, "2"] } 
+0

而你是對的。我錯過了。 –