如何遍历JSON对象的属性?

问题描述:

我想通过JSON对象的属性循环,但无法这样做。如何遍历JSON对象的属性?

var ds={ 
    "Table": [ 
    { 
     "SrNo": 1, 
     "AuctionName": "test auction", 
     "AuctionDescription": "auction desc", 
     "Testproject": "Y", 
     "State": "India", 
     "City": "2", 
     "CompanyName": "IIFL", 
     "Commodity": "10001", 
     "BaseLineSpend": "50000", 
     "ContractMonths": "5", 
     "Owner": "arbaaz", 
     "PreviewBids": "Y", 
     "PrebidEndTime": "2015-09-11T18:00:00", 
     "BiddingStartTime": "2015-09-10T18:00:00", 
     "FirstTimeRunTime": 10, 
     "TimeBtwLotClosing": 15, 
     "BidRank": "20", 
     "StartOverTime": 25, 
     "OverTime": 30, 
     "Buffer": "Y", 
     "ImproveBidBy": "PERCENTAGE", 
     "TieBids": "Y", 
     "ActiveObservers": "Babitha G-C140492,", 
     "Observers": "Tabrez Abdul Aziz Shaikh-A185615,", 
     "ProjectOwner": "Tahir - Siddiqui-C107037,Tahir Ali-C132420,", 
     "Administrator": "Rabi Roy-V182597,Gagan Kondalana Poonacha-C134452,Rabindra Kumar Choubey-C139454,", 
     "GUID": "200869b0-e6be-4642-95ec-97509e457d63", 
     "MkrId": "C123627", 
     "MkrDt": "2015-09-03T16:23:15.917", 
     "IsCreated": null 
    } 
    ] 
} 

基于对stackoverflow的其他类似问题。我想:

var DataSet = jQuery.parseJSON(ds);     
    var json_parsed = DataSet.Table;  

var items = json_parsed.Items; // this is always undefined in console. 
for (var i = 0; i < items.length; ++i) { 
    console.log("Item #" + i); 
    for (var name in items[i]) { 
     alert(name + "=" + items[i][name]); 
    } 
} 

我在控制台中看到undefinedjson_parsed.Items;

我期待的属性名称将显示在alert中,例如:Srno,AuctionName ..等等。

+0

ds是一个主题。 jQuery.parseJSON需要一个字符串作为参数。 –

+1

当你已经有一个解析对象时,你不需要调用'parseJSON'。 – Barmar

+0

同样的问题http://stackoverflow.com/questions/85992/how-do-i-enumerate-the-properties-of-a-javascript-object – astroanu

那么,表是一个数组,开始。其次,即使你使用Table[0].Items,也没有Items属性,这就是为什么你得到“未定义”。

那么试试这个来代替:

var items = json_parsed[0]; 
for (var name in items) { 
    alert(name + "=" + items[name]); 
} 

DEMO

+0

不工作:http://jsfiddle.net/fvfppe8k/ – Arbaaz

+0

@Arbaaz,我更新了我的答案,包括演示。再试一次。 – Andy

+0

'json_parsed [0];'确实做了什么? – Arbaaz

我看到你在那里有jQuery的。 Javascript方法很好。但是,如果你想循环jQuery中的JSON对象,那么你可以尝试下面的代码:

var ds={ 
    "Table": [ 
    { 
     "SrNo": 1, 
     "AuctionName": "test auction", 
     "AuctionDescription": "auction desc", 
     "Testproject": "Y", 
     "State": "India", 
     "City": "2", 
     "CompanyName": "IIFL", 
     "Commodity": "10001", 
     "BaseLineSpend": "50000", 
     "ContractMonths": "5", 
     "Owner": "arbaaz", 
     "PreviewBids": "Y", 
     "PrebidEndTime": "2015-09-11T18:00:00", 
     "BiddingStartTime": "2015-09-10T18:00:00", 
     "FirstTimeRunTime": 10, 
     "TimeBtwLotClosing": 15, 
     "BidRank": "20", 
     "StartOverTime": 25, 
     "OverTime": 30, 
     "Buffer": "Y", 
     "ImproveBidBy": "PERCENTAGE", 
     "TieBids": "Y", 
     "ActiveObservers": "Babitha G-C140492,", 
     "Observers": "Tabrez Abdul Aziz Shaikh-A185615,", 
     "ProjectOwner": "Tahir - Siddiqui-C107037,Tahir Ali-C132420,", 
     "Administrator": "Rabi Roy-V182597,Gagan Kondalana Poonacha-C134452,Rabindra Kumar Choubey-C139454,", 
     "GUID": "200869b0-e6be-4642-95ec-97509e457d63", 
     "MkrId": "C123627", 
     "MkrDt": "2015-09-03T16:23:15.917", 
     "IsCreated": null 
    } 
    ] 
} 


var jsonData = ds.Table[0]; 
$.each(jsonData, function(index, value) { 
    console.log(index + '=' + value); 
});