2015-01-05 77 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