2016-03-26 2 views
2

Я новичок в яваскрипт и я хочу, чтобы подсчитать значения этой строки JSON:Подсчитайте значения в JSON с помощью JavaScript

{ 
    "files": [ 
     { 
      "name": "doc1.pdf", 
      "title": "networking", 
      "path": "mfpreader.comze.com\/files\/doc1.pdf" 
     }, 
     { 
      "name": "doc2.pdf", 
      "title": "Armoogum", 
      "path": "mfpreader.comze.com\/files\/doc2.pdf" 
     } 
    ] 
} 

JSON сохраняется в res.responseJSON.data.

вот код я пробовал:

$("#demo").html(JSON.stringify(res.responseJSON.data)); 

var jsonObject = JSON.parse(res.responseJSON.data); 
var propertyNames = Object.keys(jsonObject); 

alert("There are "+propertyNames.length+" properties in the object"); 

Значение получить равно 1. Это должно быть 2, так как у нас есть 2 документа.

можно ли сделать некоторые пожалуйста. Спасибо

+0

'propertyNames.name.length' - сосчитать' name' поле не 'files' поле, как вы –

+0

Возможные дубликатом [? Получить общее количество элементов на объекте Json] (http://stackoverflow.com/questions/13782698/get-total-number-of-items-on-json-object) –

+0

получить массив из файлов, а затем проверить длину массива – Newinjava

ответ

4

Для требуемого вывода, что вы хотите, вы должны сделать как ниже

var v={"files":[{"name":"doc1.pdf","title":"networking","path":"mfpreader.comze.com\/files\/doc1.pdf"},{"name":"doc2.pdf","title":"Armoogum","path":"mfpreader.comze.com\/files\/doc2.pdf"}]}; 

console.log(v.files.length) 
+0

Спасибо всем парням –

0

Ваш объект json имеет только 1 ключ на уровне корня. то есть «файлы»

jsonObject = {"files":[{"name":"doc1.pdf","title":"networking","path":"mfpreader.comze.com\/files\/doc1.pdf"},{"name":"doc2.pdf","title":"Armoogum","path":"mfpreader.comze.com\/files\/doc2.pdf"}]} 
Object.keys(jsonObject) 
    // will return -> ["files"] 
+0

Я хочу прочитать остальное, потому что файлы - это массив. –

0

DhruvPathak правильно - ваше решение возвращается 1, так как есть только один ключ на корневом слое объекта JSON.

Если вы хотите, чтобы подсчитать количество ключей в нижних слоях, вы могли бы сделать что-то вроде:

$("#demo").html(JSON.stringify(res.responseJSON.data)); 

     var jsonObject = JSON.parse(res.responseJSON.data); 

     var numProperties = 0; 

     for (item in jsonObject) { 
      numProperties += Object.keys(item).length; 
     } 
     alert("There are " + numProperties + " properties in the object"); 

Вы можете найти число свойств в любом слое объекта JSON с помощью вложенных for петель ,

Надеюсь, это поможет!

0

Просто используйте res.responseJSON.data.files.length

$("#demo").html(JSON.stringify(res.responseJSON.data)); 

//var jsonObject = JSON.parse(res.responseJSON.data); 
//var propertyNames = Object.keys(jsonObject); 

alert("There are "+res.responseJSON.data.files.length+" properties in the object"); 
1

Присвоить json ответ на переменную т.е.

var result = {"files":[{"name":"doc1.pdf","title":"networking","path":"mfpreader.comze.com/files/doc1.pdf"},{"name":"doc2.pdf","title":"Armoogum","path":"mfpreader.comze.com/files/doc2.pdf"}]} 

Теперь граф файлов

result.files.length

выход: 2

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