2017-04-12 39 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');