2013-06-27 69 views
0

我有一个json文件。我可以使用json文件中的数据使用获取JSON数组的长度

$.getJSON.json("mock/Insight72.json", function (jsondata) { 
    response = jsondata.Data1; 
    response2 = jsondata.Data2; 
}); 

但我想查找Data1和Data2的长度。我该怎么办?

Here`s JSON数据(只有水果部分)..

], 
"Data1": { 
    "kitchen selectives": [{ 
     "displayColor": "#DC143C", 
      "numProducts": 1, 
      "averagePrice": 25.99, 
    }], 
     "aroma": [{ 
     "displayColor": "#991F1F", 
      "numProducts": 1, 
      "averagePrice": 60.25, 
    }, { 
     "displayColor": "#DC143C", 
      "numProducts": 1, 
      "averagePrice": 46.19, 
    }, ............ 

回答

3

至于Data1似乎是一个Object{ ... }),它只会有一个length如果已明确给出另一个键/值:

{ 
    "aroma": [], 
    "length": 2 
} 

不过,如果你想知道的键/属性,它的数量,你可以使用Object.keys()

var keyCountData1 = Object.keys(jsondata.Data1).length; 

您也可以在检索任何Arraylength[ ... ]) 210,如"aroma"

var aromas = jsondata.Data1.aroma.length; 

或者,如果你想知道对象为JSON的length

var dataLength = JSON.stringify(jsondata.Data1).length; 

除此之外,但是,你必须清楚地了解到““你期待的长度为”。

2

要找出多少元素在response对象,你可以这样做:

var length = 0; 
for (var key in response) { 
    response.hasOwnProperty(key) && ++length; 
} 

如果你想找出它下面的所有阵列的总长度,你可以这样做:

var length = 0; 
for (var key in response) { 
    response.hasOwnProperty(key) && length += response[key].length; 
} 
+0

你应该重写一下包含'if(response.hasOwnProperty(key))'而不是'&&'-approach。这样,即使是凡人的js开发人员也可以理解它是如何工作的。 – Alxandr

0

您可以使用两种不同的方法

  1. 这个人是不兼容IE7和8看here为好。

    var length = Object.keys(response).length; 
    var length2 = Object.keys(response2).length; 
    
  2. 这人会通过JSON和返回长度itterate:

    function getJSONLegth(response) { 
        var count = 0; 
        for (var k in response) { 
         count++; 
        } 
        return count; 
    }  
    
    var length = getJSONLegth(response); 
    var length2 = getJSONLegth(response2); 
    

    你觉得如何?