解析后我无法遍历 json
I am not able to iterate over json after parsed
我正在尝试循环一个从后端接收的对象。收到后,我迭代了一次容器,我在这里收到错误消息,而不是获取对象值。
JSON link 示例:https://dl.dropboxusercontent.com/u/10268257/TCSPage.json
这是我的函数:
jsonConvertor = function (argument) {
return {
init : function (json) {
var that = this;
this.receivedJson = $.parseJSON(json); //i am parseing still not working
console.log(this.receivedJson.DocPageDetails)
// _.each(that.receivedJson.DocPageDetails, function (i, item) {
// console.log(i, item);
// });
}
}
};
$.get("https://dl.dropboxusercontent.com/u/10268257/TCSPage.json")
.error(function() {
console.log('no page found error');
})
.done(function(json){
var html = jsonConvertor().init(json);
})
您不能在 JSON 中使用 //
评论,因此您必须先对其进行清理。在这种情况下,删除逗号字符后(紧接着或在某些空格之后)的所有 //-something-\n
序列似乎就足够了。但即使在那之后,您也应该解决 obj.d.DocPageDetails
,而不是 obj.DocPageDetails
- 这很容易检查您是否记录了接收到的对象。所以,这里有一种可能的方法来做你想做的事:
var uncommentedJSON = json.replace(/,\s*\/\/[^\n]*\n/g, ',\n');
var obj = $.parseJSON(uncommentedJSON);
$.each(obj.d.DocPageDetails, function (i, item) {
console.log(i, item);
});
Demo。我已将 _.each
替换为 $.each
,因为您没有在 fiddle 中包含 underscore
,但这不会有什么不同。
我正在尝试循环一个从后端接收的对象。收到后,我迭代了一次容器,我在这里收到错误消息,而不是获取对象值。
JSON link 示例:https://dl.dropboxusercontent.com/u/10268257/TCSPage.json
这是我的函数:
jsonConvertor = function (argument) {
return {
init : function (json) {
var that = this;
this.receivedJson = $.parseJSON(json); //i am parseing still not working
console.log(this.receivedJson.DocPageDetails)
// _.each(that.receivedJson.DocPageDetails, function (i, item) {
// console.log(i, item);
// });
}
}
};
$.get("https://dl.dropboxusercontent.com/u/10268257/TCSPage.json")
.error(function() {
console.log('no page found error');
})
.done(function(json){
var html = jsonConvertor().init(json);
})
您不能在 JSON 中使用 //
评论,因此您必须先对其进行清理。在这种情况下,删除逗号字符后(紧接着或在某些空格之后)的所有 //-something-\n
序列似乎就足够了。但即使在那之后,您也应该解决 obj.d.DocPageDetails
,而不是 obj.DocPageDetails
- 这很容易检查您是否记录了接收到的对象。所以,这里有一种可能的方法来做你想做的事:
var uncommentedJSON = json.replace(/,\s*\/\/[^\n]*\n/g, ',\n');
var obj = $.parseJSON(uncommentedJSON);
$.each(obj.d.DocPageDetails, function (i, item) {
console.log(i, item);
});
Demo。我已将 _.each
替换为 $.each
,因为您没有在 fiddle 中包含 underscore
,但这不会有什么不同。