2017-04-12 37 views
0

我收到我的Symfony Ajax控制器標準的JSON符號:的Javascript JSON字符串分割成

{"id":1,"filial":0} //like this 

,然後我嘗試將其轉換以德下面的代碼對象:

var filterData = new FilterData(json);//my received json here 
console.log(filterData); 

但我console.log向我顯示以下內容:

FilterData {0: "{", 1: """, 2: "i", 3: "d", 4: """, 5: ":", 6: "1", 7: ",", 8: """, 9: "f", 10: "i", 11: "l", 12: "i", 13: "a", 14: "l", 15: """, 16: ":", 17: "0", 18: ",", 19: """, //etc... 

但我需要一個常規的FilterData對象。它的代碼如下:

function FilterData(json) { 
    this.id;  
    this.filial; 

for (var prop in json) this[prop] = json[prop]; 
} 

任何想法如何解決它?謝謝。

+3

你可以嘗試'var filterData = new FilterData(JSON.parse(json))''?我猜JSON變量是作爲一個字符串鍵入的。 –

+0

JSON.parse(json)解決了這個問題,謝謝 – Jack

+0

我會在一分鐘內添加一個答案,以便您可以設置此問題解決 –

回答

2

發生了什麼事情是您從服務器獲得的JSON沒有立即解析爲JSON,而是被識別爲字符串。通過字符串循環返回單個字符,如果要將字符串拆分爲其字符,但不是現在,這非常有用。

的解決方案是將字符串解析到一個JSON對象:

var filterData = new FilterData(JSON.parse(json)); 

另一種解決方案是改變標頭由API發送。在這種情況下,它是一個PHP應用程序,所以下面的代碼就足夠了:

header('Content-type: application/json');