2017-09-26 149 views
-1

我想将我的ajax json响应转换为javascript数组。我不知道我能做到这一点。我试过拆分,但这不是我想要的。请帮忙!Json响应数组javascript

我的AJAX JSON响应(这是一个字符串):在阵列推后

Array[Date:"[['2016-09-09',162], ['2016-12-04',145], ['2017-01-11',130]]"] 

我的愿望的结果:

var array = [['2016-09-09',162], ['2016-12-04',145], ['2017-01-11',130]]; 
+0

'数组转换它[日期:“...”]'...这是什么? – deceze

+0

如果我明白你得到一个文字字符串的回应?即:“Array [Date:”[['2016-09-09',162],['2016-12-04',145],['2017-01-11',130]]“]” –

+0

You AJAX响应不是JSON。 –

回答

1

使用正则表达式从字符串中提取数据。

var str = `Array[Date:"[['2016-09-09',162], ['2016-12-04',145], ['2017-01-11',130]]"]`; 
 

 
// regex for your string pattern 
 
var re = /\[\s?'(\d{4}-\d{1,2}-\d{1,2})'\s?,\s?(\d+)\s?\]/g; 
 
// array for result 
 
var res = [], 
 
    // variable for caching match 
 
    m; 
 

 
// iterate over the matches 
 
while (m = re.exec(str)) { 
 
    //push values into array 
 
    res.push([m[1], +m[2]]); // use + prefix to convert into number 
 
} 
 

 
console.log(res);

Regex explanation here


FYI:这将是更好更新服务器端代码生成有效的JSON字符串(很容易在所有的编程语言来实现,会有一个预定义的函数或库)。

+1

酷!有效!谢谢!! – lel

+0

@lel:很高兴帮助:) –

+0

hi @Pranav C Balan抱歉再次打扰,如果['2016-09-09',162]后面的数字有一个小数点,例如['2016-09-09',1.62 ]或['2016-09-09',16.2],我如何改变regax来匹配? – lel

-1

如果Ajax响应是一个字符串,则可以使用JSON.parse(strSesponse)

+0

不,它不是一个字符串,是一个列表 – lel