2013-06-04 36 views
0

轉換陣列格式化字符串對象

[[["汽車","car","Qìchē",""]],[["名詞",["汽車","車","轎車","車輛","車廂"],[["汽車",["car","automobile","auto"],,0.26497361],["車",["car","vehicle","lathe","machine","rook","turn"],,0.21967085],["轎車",["car","bus"],,0.020115795],["車輛",["vehicle","car"],,0.013611027],["車廂",["car"],,0.0042828997]]]],"en",,[["汽車",[4],0,0,1000,0,1,0]],[["car",4,[["汽車",1000,0,0],["車",0,0,0],["轎車",0,0,0],["車輛",0,0,0],["車廂",0,0,0]],[[0,3]],"car"]],,,[["en"]],27] 

這從谷歌翻譯 不過我試過

JSON.parse(xhr.responseText); 

它返回一個錯誤的意外標記

+2

在回答之前,這裏發佈的是_already_解析數據,而JSON.parse需要一個字符串(一個引號分隔的值)。 – sixFingers

+0

因爲它的類型是字符串 – user1961278

+1

這個數據來自哪裏?正如答案所說的那樣,它不是有效的JSON,因爲「,, 0.21967085」。如果它是一個API,則需要向他們報告錯誤。 – Barmar

回答

0

首先,你應該刪除多餘的[]通過替換括號。

前,

[["汽車","car","Qìchē",""]] 

應該是:

["汽車","car","Qìchē",""] 

編輯:你可以參考這樣的回答:Parse Google Translate Json C#

你應該嘗試:

var str = '[[["汽車","car","Qìchē",""]],[["名詞",["汽車","車","轎車","車輛","車廂"],[["汽車",["car","automobile","auto"],,0.26497361],["車",["car","vehicle","lathe","machine","rook","turn"],,0.21967085],["轎車",["car","bus"],,0.020115795],["車輛",["vehicle","car"],,0.013611027],["車廂",["car"],,0.0042828997]]]],"en",,[["汽車",[4],0,0,1000,0,1,0]],[["car",4,[["汽車",1000,0,0],["車",0,0,0],["轎車",0,0,0],["車輛",0,0,0],["車廂",0,0,0]],[[0,3]],"car"]],,,[["en"]],27]'; 

var objstr = $.parseJSON(str); 
+0

雙括號沒有問題,它只是一個包含另一個數組的數組。 – Barmar

1

問題是這個字符串包含多個逗號使得你的json無效。

你可以嘗試將其替換爲一個單一的一個解析

var x = '[[["汽車","car","Qìchē",""]],[["名詞",["汽車","車","轎車","車輛","車廂"],[["汽車",["car","automobile","auto"],,0.26497361],["車",["car","vehicle","lathe","machine","rook","turn"],,0.21967085],["轎車",["car","bus"],,0.020115795],["車輛",["vehicle","car"],,0.013611027],["車廂",["car"],,0.0042828997]]]],"en",,[["汽車",[4],0,0,1000,0,1,0]],[["car",4,[["汽車",1000,0,0],["車",0,0,0],["轎車",0,0,0],["車輛",0,0,0],["車廂",0,0,0]],[[0,3]],"car"]],,,[["en"]],27]' 
    .replace(/,{2,}/g, ",") // 2 or more replace for 1 

JSON.parse(x); 

之前,或者,如果你有機會獲得無論是發送此字符串固定輸出。

+0

我想他說這是來自谷歌翻譯。 – Barmar