2017-09-26 191 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