2015-01-05 41 views
0

我想循环一个对象,它从后端接收。在我收到这些消息后,我正在迭代一次容器,我在这里收到错误消息而不是获取对象值。我不能迭代解析后的json

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

我不太确定,但我认为JSON表示法不允许评论。检查并告诉我是否有效。而且,检查你的JSON结构,是否使用''this.d.receivedJson.DocPageDetails''(包括''d'')? –

回答

2

不能使用//评论里面JSON,所以你必须先清理它。在这种情况下,删除后面的所有序列(立即或在一些空格之后)后,似乎就足以删除逗号字符。但即使在此之后,您应该地址为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,但这应该没有什么区别。

+0

你能告诉我一种方法来替换所有使用'regex'移除的空元素吗? - 看看结果每个对象'DocPageDetails'感谢advace – 3gwebtrain

+0

这是'$ .grep/filter'的任务,而不是正则表达式。 – raina77ow