我从Symfony ajax控制器收到一个标准的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];
}
任何想法如何解决?谢谢。
答案 0 :(得分:2)
发生的事情是您从服务器获得的JSON没有立即解析为JSON,但被识别为字符串。循环遍历字符串会返回单个字符,如果要将字符串拆分为字符,则非常有用,但现在不能。
解决方案是将字符串解析为JSON对象:
var filterData = new FilterData(JSON.parse(json));
另一种解决方案是更改API发送的标头。在这种情况下,它是一个PHP应用程序,因此以下代码就足够了:
header('Content-type: application/json');