解析后我无法遍历json

时间:2015-01-05 10:22:36

标签: jquery json underscore.js

我正在尝试循环从后端接收的对象。收到后,我正在迭代一次容器,我收到错误消息而不是获取对象值。

JSON链接示例: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

1 个答案:

答案 0 :(得分:2)

您不能在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,因为您的小提琴中没有包含underscore,但这不应该有所作为。