2012-05-04 49 views
0
var jsn=getAttr(ref,"json-data").toString(); 
console.log(jsn); //{test: true,stringtest:"hallo"}. it's OK. 
JSON.parse(jsn); //Uncaught SyntaxError: Unexpected token s, line: line with JSON.parse; 

我覺得JSON.parse並不認同這一數據正確的東西..我試圖刪除stringtest:"hallo" - 沒有結果... PS:我也覺得我做錯了什麼,然後我問這個問題爲什麼來自obj.getAttribute的json字符串不想分析?

在我第一次嘗試JSON.parse("{"+jsn+"}");

回答

2

您的JSON格式不正確,因爲您的對象鍵必須用引號括起來。下面的工作:

​​

編輯:RFC4627,指定JSON格式,規定:

2.2。對象

一個目的結構被表示爲一對大括號
的周邊零個或多個名稱/值對(或成員)。 名稱是
字符串
。每個名稱後面都會出現一個冒號,從名稱中分隔名稱
。一個逗號與下面的名稱分開一個值。對象內的名稱應該是唯一的。

object = begin-object [ member *(value-separator member) ] 
    end-object 

    member = string name-separator value 

正如你所看到的,JSON對象是由名稱/值對,其中名稱是一個字符串。同樣,RFC說:

字符串的表示與編程語言系列中使用的約定類似。 一個字符串以
引號
開頭和結尾。所有Unicode字符可放置在
引號內除了必須轉義字符:
引號,反向固相線,並且所述控制字符(U + 0000
通過U + 001F)。

串=引號標記*炭引號標記

引號標記=%X22; 「

因此,根據RFC,密鑰必須用雙引號,而不是單一的一種所包圍。不過,我想有些解析器可能會更寬容,接受他們兩個,但我會堅持標準

+0

請問單引號的工作嗎 –

+0

我加了一些額外的信息,我希望能夠有用 – Win32

+0

我認爲這只是JS對象的習慣var obj = {som:'qwe'}; ,我想。:) Thnx。 –

相關問題