2013-06-27 2 views
0

У меня есть файл json. Я могу получить данные в файле JSON с помощьюПолучение длины массива JSON

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

Но я хочу, чтобы найти длину Data1 и data2. Что мне делать?

в данных Здесь `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; 

вы также можете получить length любого Array ([ ... ]) в Data1, такие как "aroma":

var aromas = jsondata.Data1.aroma.length; 

Или, если вы хотите знать, length объекта как JSON:

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. Это один будет itterate через JSon и длины возвращаемой:

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

    Помогло ли это вам?

Смежные вопросы