2015-09-07 8 views
3

JavaScript Если у меня есть это:получить значение объекта внутри массива внутри объекта с

{ 
    "data": [{ 
    "id": "4831", 
    "name": "Rui Vasco Martins", 
    "nickname": "rvgmartins", 
    "money_start": "10200", 
    "balance": "8000" 
    }] 
} 

Как получить значение data->id, data->name и т.д.?

+2

Это объект. – j08691

+0

Объект с массивами, с объектами ... – Chris

+0

Хорошо, я редактирую. Как же тогда я это делаю? –

ответ

4

Данные несколько. Это означает, что это массив объектов. Нет таких данных, как data-> id, только данные [n] -> id. В этом случае вам могут понадобиться все возможные идентификаторы, и вы можете сделать это с помощью традиционного для цикла или другого.

var i =0; 
var total = object.data.length; 
var ids = []; 
for(; i < total; i++) { 
    ids.push(data[ i ].id); 
} 
console.log(ids); 

Если вы уверены, что есть только одна запись данных и будет всегда, вы можете быть прямо вперед и идти object.data[ 0 ].id как хорошо!

Пожалуйста, обратите внимание, что «объект» является переменным, содержащей JSON :)

И в следующий раз, вот небольшой намек: http://jsonlint.com/

Надежда, что помогает!

4

Ваш объект содержит массив, поэтому вам нужно использовать правильные индексы для дальнейшего углубления в объект; ваш идентификатор и имя находятся в первом массиве, поэтому мы используем obj.data[0].

var obj = {"data":[{"id":"4831","name":"Rui Vasco Martins","nickname":"rvgmartins","money_start":"10200","balance":"8000","profit":"5010","nreload":"1","deal_id":"4813","created_at":"2015-05-27 12:54:33","updated_at":"2015-07-21 22:31:47"}],"status":200,"config":{"method":"GET","transformRequest":[null],"transformResponse":[null],"url":"services/dashboard","headers":{"Accept":"application/json, text/pla`in, */*"}},"statusText":"OK"} 

Вы можете использовать либо точку или квадратные скобки, обозначение, чтобы дополнительно определить свойство объекта, вот точечная нотация:

var data_id = obj.data[0].id; // "4831" 
var data_name = obj.data[0].name; // "Rui Vasco Martins" 

Вот квадрат скобки обозначение:

var data_id = obj.data[0]['id']; // "4831" 
var data_name = obj.data[0]['name']; // "Rui Vasco Martins" 
+1

Этот ответ правильный, учитывая вопрос OPs, но он может работать не так, как ожидалось, во всех случаях использования. Зависит от того, какие данные содержат. Что, если он содержит несколько объектов в своем массиве? См. Ответ @Bene – Chris

+0

Я предполагаю, что это будет рассмотрено в последующем вопросе; Я отвечаю только на вопрос. – Data

+0

И JS linter предпочитают точечную нотацию, в случае, если OP берет этот ответ! – Bene

0

В пределах data есть массив, вы можете сделать:

var myJson = { 
 
    "data": [{ 
 
     "id": "4831", 
 
      "name": "Rui Vasco Martins", 
 
      "nickname": "rvgmartins", 
 
      "money_start": "10200", 
 
      "balance": "8000", 
 
      "profit": "5010", 
 
      "nreload": "1", 
 
      "deal_id": "4813", 
 
      "created_at": "2015-05-27 12:54:33", 
 
      "updated_at": "2015-07-21 22:31:47" 
 
    }], 
 
     "status": 200, 
 
     "config": { 
 
     "method": "GET", 
 
      "transformRequest": [null], 
 
      "transformResponse": [null], 
 
      "url": "services/dashboard", 
 
      "headers": { 
 
      "Accept": "application/json, text/plain, */*" 
 
     } 
 
    }, 
 
     "statusText": "OK" 
 
} 
 
document.write('id: ' + myJson.data[0].id + '</br>name: ' + myJson.data[0].name);

0

Во-первых, давайте поймем вашу проблему. Примечания должны быть приняты:

  • у вас есть JSON, который находится внутри переменной, я буду считать, что эта переменная foo
  • нет такого понятия, как data->id в JavaScript. Если у вас есть объект, который называется data, и у него есть член, который называется id, то вы ссылаетесь на него как data.id
  • name находится внутри массива. Элемент массива ссылается индекс, который начинается с 0, поэтому, ваш массив отмечен как data представляет собой массив, имеющий один элемент, который является 0th элемент

Таким образом, вы можете получить id с foo.data[0].id, и вы можете получить name как foo.data[0].name. Однако, по сути, ничто не заставляет ваш массив иметь ровно один элемент. Если есть больше элементов, вы должны иметь возможность как-то решить, какие интересующие вас элементы id и name. Кроме того, ваш массив не вынужден иметь элементы вообще.

Всякий раз, когда вы видите такой JSON, массивы заключены внутри [] скобки и объекты заключены внутри {} скоб.

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