2016-08-27 177 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); 

,但 “在位置1意外的标记(JSON中的”

+0

VAR myArray的= JSON.parse(my_str)检索数字夫妻; 但它会抛出错误“意想不到的令牌(在位置1的JSON中” –

+0

加入您的评论部分也在问题中,然后它会更清晰 –

回答

1

引发错误我想这

var myarray = JSON.parse(my_str); 

但它抛出错误“意外的令牌(位于JSON的位置1”

所以我改变了我的字符串的结构于:

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

这是一个非常幼稚的想法,但没有工作(没有JSON.parseeval):

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);谢谢 –