2016-08-27 13 views
0

の配列に私は、リストの配列に変換する必要がある文字列逆シリアル化JSON文字列リスト

var my_str="[(0,10),(1,15),(2,48),(3,63),(4,25),(5,95),(6,41),(7,31),(8,5),(15,2)]"; 

をしました。たとえば、

alert(my_str[1]) 

の出力は1,15となります。私はこの

var myarray = JSON.parse(my_str); 

を試みたが、それはスロー

var myarray = JSON.parse(my_str); 

が、それは

+0

するvar myarrayの= JSON.parse(my_strに)を取得することができます。 しかし、それはエラー "予期しないトークン(位置1のJSONで" –

+0

あなたのコメントセクションの部分も質問に追加します)より明らかになります –

答えて

1

"位置1でJSONで予期しないトークン(" エラーがスローされます。

は、私は、次の試してみましたエラー "予期しないトークン(位置1のJSONで"

だから私の文字列の構造を変更しました:魅力のように働いた

var my_str="[[0,10],[1,15],[2,48],[3,63],[4,25],[5,95],[6,41],[7,31],[8,5],[15,2]]"; 

;)

0

あなたは)'によって'()(を交換する必要が,,その後、evalを適用します。

eval(arr.replace(/(/g,'\'(').replace(/)/g,')\'')); 
//> ["(0,10)", "(1,15)", "(2,48)", "(3,63)", "(4,25)", "(5,95)", "(6,41)", "(7,31)", "(8,5)", "(15,2)"] 
0

これはかなりナイーブでありますアイデアはありませんが(またはevalなし):

var arr = my_str.replace('[(', '').replace(')]', '').split('),('); 

//> ["0,10", "1,15", "2,48", "3,63", "4,25", "5,95", "6,41", "7,31", "8,5", "15,2"] 
0
var arr = my_str.split("),(") 
arr[0] = arr[0].slice(2); 
arr[arr.length-1] = arr[arr.length-1].slice(0,-2) 
1

問題は、内側のオブジェクトを区切るために奇妙なsintaxを使用していることです。 "("と ")"の代わりに "["と "]"を使用することが適切です。 とにかく、それらを簡単にjavascriptで置き換えて構造体に文字列の配列を作ることができます。少し気味悪いですが、この方法でJSONオブジェクトを作成し、JSネイティブメソッドの利点を得ることができます。

var my_array = JSON.parse(my_str.replace(/\(/g,'[').replace(/\)/g,']')) 

あなたは今my_arrayでオブジェクト上で動作し、配列インデックスを使用して数字のカップル

my_array[1] ---> 1,15 
+0

はい、あなたは儀式、私の構文が正しくありません。単純にJson.parse(my_str)を使用しました;ありがとう –

関連する問題