2013-11-25 37 views
0

我想解析一個JSON,我將從Java會話變量中獲取該JSON。我正在使用這樣的代碼:JSON.parse:Javascript中的意外字符錯誤

var foo1 = <%= session.getAttribute("json").toString() %> 
var foo = JSON.parse(foo1.toString()); 
alert(foo.toString()); 

(是的,我知道scriptlets是壞的,但這只是暫時的)。我通過foo1獲得的價值是有效的JSON(我通過在線驗證器進行了驗證)。但是,當我試圖提醒foo1我將它作爲[對象,對象],但如果我嘗試解析,我得到JSON.parse:Unexcpected character錯誤。

我已經上傳JSON here,如果需要的話。由於它有點大JSON字符串,我不能張貼在這裏。

有人可以幫我知道我在做什麼錯嗎?總結我正在嘗試從Java會話變量中獲取JSON字符串並試圖在Javascript中解析它。任何提示如何做到這一點,表示讚賞。

回答

1

嘗試這樣的事情

var foo = <%= session.getAttribute("json").toString() %> 
alert(foo.toString()); 

原因:你已經獲得JSON對象,所以沒有必要進行解析。

var obj = {id:1}; // No need to parse 
var obj = "{id:1}"; // Need to parse 
+0

於是我可以能夠訪問的元素,就像它已經被解析?對? –

+0

是的,你確定你可以 –

+0

它再次打印我爲「[object,Object]」 –

0

對你而言,foo1不是一個字符串,而是一個JSON對象!這是因爲你沒有給它分配一個字符串文字,而是一個JavaScript對象結構。

我們假設"json"屬性的字符串值爲{ name: "Jack", age: 25 }。 JSP處理已經完成,現在後,客戶端會收到如下:

var foo1 = { name: "Jack", age: 25 } 

什麼你可能預料到的是:

var foo1 = "{ name: \"Jack\", age: 25 }"