2013-09-09 4 views
0

У меня есть следующий файл JSON ниже:Невозможно читать JSON файл

{"myArea":[{ 
"name": "ny 01", 
"data": [63] 
}]} 

Я использую ниже код для извлечения данных:

$(document).ready(function() { 
    $.getJSON('area.json',function(area){ 
    console.log(area[0][0]); 
    }); 
}); 

Однако данные не извлеченное. Журнал консоли говорит об объекте объекта или неопределенном имени при попытке console.log(area[0]) или console.log(area[0].name). Каков надлежащий способ доступа к данным?

+2

Try: 'console.log (area.myArea [0])' – dc5

+3

Основываясь на том, что Вы разместили здесь, я ожидаю, что вы должны получить 'область [ "myArea"]' (или просто 'область .myArea'). Вы не имеете в виду массив 'myArea' в любом месте вашего кода. – apsillers

+0

'console.log (area.myArea [0])' работал для меня. благодаря – Claude

ответ

0

В Опубликованном код, area имеет одно свойство под названием myArea.

console.log(area.myArea) даст вам:

[{"name": "ny 01", "data": [63]}] 

console.log(area.myArea[0] даст вам:

{"name": "ny 01", "data": [63]} 

Чтобы получить доступ к data первого элемента:

console.log(area.myArea[0].data[0]

дало бы вам 63

2

Ваш корневой объект JSON является «объектом»! Вы можете получить доступ к свойствам с помощью area['name'] или area.name (где имя является действительным ключом).

В вашем случае у вас есть ключ myArea: area['myArea'].

Результатом этого выражения будет следующий массив (выраженный в формате JSON здесь):

[{ 
"name": "ny 01", 
"data": [63] 
}] 

Теперь вы можете получить первый элемент из myArea массива с помощью area['myAray'][0]. Это приведет к следующему объекту возвращается:

{ 
"name": "ny 01", 
"data": [63] 
} 

Доступ к данным довольно легко сейчас (но обратите внимание на данных, это массив!)

$(document).ready(function() { 
    $.getJSON('area.json',function(area){ 
    console.log(area['myArea'][0]['name']); "ny 01" 
    console.log(area['myArea'][0]['data'][0]); 63 
    }); 
}); 
0

Вы обрабатываете «область» как массив (пытаясь получить доступ к элементу с нулевым индексом), но это объект. Вместо этого попробуйте получить доступ к атрибуту «myArea» объекта.

var area = {"myArea":[{ 
    "name": "ny 01", 
    "data": [63] 
}]}; 

area[0]; // => undefined, because there is no attribute with key "0". 
area['myArea']; // => [{name:"ny 01",...}], same as "area.myArea". 
Смежные вопросы