解析后我无法遍历 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);
})

Live Demo

您不能在 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,但这不会有什么不同。