2012-02-16 9 views
0

私はJSON文字列を取得しています。次のように文字列は次のとおりです。JSON文字列を正しく変換していないjqueryプラグイン

"{"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が数字であることはほぼ肯定的ですが、以前は間違っていました。

ありがとうございます。

更新:

私は謝罪、始めと終わりの引用符は、実際には文字列の一部ではありません。コピー/ペーストの落とし穴。ここで

は、コンテキスト内のコードです:

「frame.bodyは」引用符なしで上記の投稿の文字列である
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); 

+0

上記のコードは有効なjs構文ではありません。 JSONは有効な構文なので、受信しているものと正確には一致しません。また、データの処理に問題があることがわかります – Kato

+0

jQueryを使用していますか?evalJSON()関数はプロトタイプ関数です(http://www.prototypejs.org/api/string/evalJSON)jQueryでこれは等価なものは.parseJSON()です。また、不正な形式の文字列だった場合、evalJSON()はエラーを返すので、データの処理方法でなければなりません。 – Jlange

+0

jqueryのjsonプラグインを使用していますここで:http://code.google.com/p/jquery-json/また、parseJSON()も同じことをします。 – user1052474

答えて

0

先頭と末尾の引用符"は無効です。

1

エラーは他の場所です。文字列と完全にparseJSON作品を使用して、あなたはそれはあなたの問題はあなたが変数rにparseJSONのリターンを割り当てていると、あなたがNumber(changedData.from.line)をやろうとしているということであるということかもしれ

var str = '{"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}}}'; 

var json = $.parseJSON(str); 
alert(json.changedData.from.line); //outputs 20 

http://jsfiddle.net/mendesjuan/qG6Qv/1/を与えてくれました。変数がありませんchangedData

関連する問題