我得到一個JSON字符串通過彗星請求。該字符串如下:jquery插件沒有正確轉換JSON字符串
"{"tab":2,"changedData":{"from":{"line":20,"ch":0},"to":{"line":20,"ch":0},"text":["a"]},"cmd":"copyChunk","timestamp":1329409543902,"person":{"comradeID":"4ef37369b4812","firstName":"","lastName":"","fullName":"ben team2","nickName":"ben t.","messageCount":0,"email":"[email protected]","lastPing":1329409537308,"sessionLeader":true,"cursorPosition":{"line":0,"ch":0}}}"
我運行它通過的jQuery插件JSON:
var r = $.evalJSON(jsonstring);
但它不會正確地轉換 「changeData」 對象。它的其餘部分都工作,但changedData.from.line和changedData.to.line都導致NaN。
我也試着發送changedData.from.line作爲一個字符串,然後使用
Number(changedData.from.line)
將其轉換回數字,但它仍然返回NaN。我幾乎肯定20是一個數字,但我以前錯了。
在此先感謝。
更新:
我道歉,在開始和結束的報價實際上不是字符串的一部分。複製/粘貼的陷阱。
這是在上下文中的代碼:
onMessage : function(frame)
{
//This function calls the handlers.
//this is fired every time we recieve a message from orbited
//this is what calls the handler functions
//body is a json string containing whatever data was sent via the send() function
delete r;
//convert the body to an object
var r = $.evalJSON(frame.body);
其中「frame.body」是上面貼不帶引號的字符串。
你上面的代碼是無效的js語法;它有「在開始/結束和內部標記; JSON是有效的語法,所以這不可能正是你所接受的。另外,我認爲你會發現問題在於數據的一些處理,所以我們肯定需要更多的代碼和上下文 – Kato 2012-02-16 16:50:31
您確定您使用的是jQuery?函數evalJSON()是一個原型函數(http://www.prototypejs.org/api/string/evalJSON)在jQuery ,相當於.parseJSON()。另外,如果它是一個格式不正確的字符串,evalJSON()將返回錯誤,所以它必須是你如何處理數據。 – Jlange 2012-02-16 17:03:59
我使用jQuery插件jquery這裏:http://code.google.com/p/jquery-json/另外,parseJSON()也做同樣的事情 – user1052474 2012-02-16 17:06:50