2016-02-05 5 views
0

Иногда в JSON есть несколько значений, которые не представлены как пары значений имени, а как только имена, а затем их свойства и ниже, например, в JSON ниже объекта One, ObjectTwo и objectThree , Проблема в том, что имена продолжают меняться, как я могу их извлечь, если я не знаю заранее, что это будут имена? Но структура данных будет таким жеКак получить имена вложенных объектов Json с javascript

{ 
     "Number of objects": 3, 
     "Devices": { 
      "objectOne": { 
       "name": "10", 
       "name1": "50" 
      }, 
      "objectTwo": { 
       "name": "20", 
       "name1": "30" 
      }, 
      "objectThree": { 
       "name": "40", 
       "name1": "80" 
      } 
     } 
    } 
+0

http://stackoverflow.com/questions/15523514/find-by-key-deep -in-nested-json-object –

+1

Вы можете перебирать свойства объекта, такие как 'for (var prop в obj.Devices)' для динамического получения имен свойств. – A1rPun

+0

Как вы собираетесь использовать эти имена динамических устройств? Вам нужно распечатывать свои свойства по одному или вам нужно получить доступ к определенному? – AKS

ответ

3

Вы можете попробовать использовать Object.keys метод.

Пример:

var yourJson = { 
    "Number of objects": 3, 
    "Devices": { 
     "objectOne": { 
      "name": "10", 
      "name1": "50" 
     }, 
     "objectTwo": { 
      "name": "20", 
      "name1": "30" 
     }, 
     "objectThree": { 
      "name": "40", 
      "name1": "80" 
     } 
    } 
} 
var keys = Object.keys(yourJson.Devices); // Array with "objectOne", "objectTwo" and "objectThree" 

UPDATE: Тогда вы можете получить доступ к objectTwo таким образом:

var objectTwo = yourJson.Devices[keys[1]]; 

Если вам нужно перебрать все это лучше:

for (var key in keys) { 
    // key = "objectOne", then "objectTwo", then "objectThree" 
    var objectN = yourJson.Devices[key]; // the device object 
} 
+0

Спасибо, это ответ, на который я искал больше вопросов после вашего кода, если я хочу извлечь значение name1, как я могу это сделать, я попытался сделать var name1 = keys. name1, но это дает мне неопределенное значение? Клавиши – Imo

+0

- это массив, содержащий имена объектов. вы можете получить доступ к своим свойствам с помощью yourJson [keys [0]]. name1 –

+0

Я только что обновил свой ответ. – Vinks

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