2014-03-31 99 views
0

我不確定如果我想在這裏實現不可能的事情,那麼JavaScript不是我的強項。從字符串REST響應中創建Javascript對象數組

這是數據結構,我需要,在JavaScript中,以便填充使用谷歌-圖表的圖表:

injuryDistChart.data = [['X', '1', '2', '3', '4', '5', '6'], 
    [1, 2, null, null, null, null, null], 
    [2, 2, 3, null, null, null, null], 
    [3, 2, null, 4, null, 6, null], 
    [4, null, null, null, 5, null, null], 
    [5, null, null, null, null, 6, null], 
    [6, 2, null, null, 5, null, 7], 
    [7, 2, null, null, 5, null, 7], 
    [8, 2, null, null, 5, null, 7], 
    [9, 2, null, null, 5, null, 7], 
    [10, 2, null, null, 5, null, 7] 
]; 

我從服務器生成的響應如下。它是一個字符串不是一個JSON響應:

"[['X', '1', '2', '3', '4', '5', '6'], 
    [1, 2, null, null, null, null, null], 
    [2, 2, 3, null, null, null, null], 
    [3, 2, null, 4, null, 6, null], 
    [4, null, null, null, 5, null, null], 
    [5, null, null, null, null, 6, null], 
    [6, 2, null, null, 5, null, 7], 
    [7, 2, null, null, 5, null, 7], 
    [8, 2, null, null, 5, null, 7], 
    [9, 2, null, null, 5, null, 7], 
    [10, 2, null, null, 5, null, 7] 
]" 

有沒有辦法來此String對象轉換爲3-d陣列,還是我在錯誤的方式去這件事?

我應該發回一個JSON響應,並將其轉換爲我需要的三維數組?

我使用Java REST風格的WS,角度和谷歌圖表。

+0

谷歌總是有JSON API somwhere對於給定的服務。所以,如果這不是JSON,那麼去那裏尋找更好的API;) –

+1

只需使用'''而不是'''這將使一個有效的JSON。 – dfsq

回答

0

理想情況下返回JSON是首選的方法。如果這是不可能的,在這個實例中你需要做的就是將單引號轉換爲雙引號,以使其有效JSON,然後像正常一樣解析它。

var json = str.replace("'", '"', 'g'); 
injuryDistChart.data = JSON.parse(json); 

Fiddle

+0

'replace(/'/ g,'''';' – dfsq

+0

因此,我將單引號改爲雙引號,用服務器端,然後使用JSON.parse(),並且一切正常 –

0

如果您不能從服務中發回JSON對象以將字符串解析爲JSON對象,則可以在返回的字符串上使用JSON.parse(),但理想情況是,您應該將服務設置的響應類型設置爲json

+0

我可以發回JSON,但我認爲格式I已經發布上​​面,是唯一的格式,它看起來像谷歌的圖表確實有一個JSON API,這是我需要看看, –