2014-09-25 2 views
0

У меня есть набор данных json, которые были выведены через URL-адрес. Данные имеют разные уровни, и мне нужно получить доступ к одному уровню, а затем использовать эти данные в цикле jquery для управления некоторыми функциями.Как я могу получить конкретные данные из вывода данных json?

В JSON URL выводит данные, как это:

{ 
"id": 32, 
"title": "sascas", 
"synopsis": "<p>cxcxcx</p>\r\n", 
"body": "<p>cxccxxc</p>\r\n", 
"created_at": "2014-09-25T14:12:06.345Z", 
"updated_at": "2014-09-25T14:12:06.345Z", 
"author": { 
"name": "A test author", 
"biography": "/system/authors/avatars/000/000/024/original/photo.JPG?1411472688", 
"id": 24 
}, 
"schools": { 
"schools": [ 
{ 
"id": 5, 
"school_name": "Another london school Inner Circle Regent's Park, London", 
"website": null, 
"book_id": 32, 
"created_at": "2014-09-25T14:12:06.413Z", 
"updated_at": "2014-09-25T14:12:06.413Z" 
}, 
{ 
"id": 6, 
"school_name": "city of london school 107 Queen Victoria St London", 
"website": null, 
"book_id": 32, 
"created_at": "2014-09-25T14:12:06.417Z", 
"updated_at": "2014-09-25T14:12:06.417Z" 
} 
] 
} 
} 

Я в основном пытаюсь получить доступ к данным школы только в этом цикле в функции JS. В настоящее время функция использует и каждый цикл и добавляет маркеры на карту. Что я хочу знать, может ли моя функция получить данные о школах? Вот моя JS функция для нее:

var initMap = function() { 

# The url that is generated in the html for me to grab 
var info = $('#map').data('book-title'); 
$.get(info, {}, function(response) { 
setMarkers(map, response); 
# some other js stuff for map here inside the $get 
}, 'json'); 

} 

Тогда в функции setmarkers у меня есть это:

function setMarkers(map, json) { 
jQuery.each(json, function (index, city) { 
var school = city['schools']; 
console.log(school); 
}); 
} 

В выходных данных в консоли я получаю это:

[Object, Object]0: Object book_id: 32 created_at: "2014-09-25T14:12:06.413Z"id: 5school_name: "Another london school Inner Circle Regent's Park, London" updated_at: "2014-09-25T14:12:06.413Z" website: null__proto__: Object__define Getter__: function __defineGetter__() { [native code] }__defineSetter__: function __defineSetter__() { [native code] }__lookupGetter__: function __lookupGetter__() { [native code] }__lookupSetter__: function __lookupSetter__() { [native code] }constructor: function Object() { [native code] }hasOwnProperty: function hasOwnProperty() { [native code] }isPrototypeOf: function isPrototypeOf() { [native code] }propertyIsEnumerable: function propertyIsEnumerable() { [native code] }toLocaleString: function toLocaleString() { [native code] }toString: function toString() { [native code] }valueOf: function valueOf() { [native code] }get __proto__: function __proto__() { [native code] }set __proto__: function __proto__() { [native code] }1: Objectbook_id: 32created_at: "2014-09-25T14:12:06.417Z"id: 6school_name: "city of london school 107 Queen Victoria St London"updated_at: "2014-09-25T14:12:06.417Z"website: null__proto__: Objectlength: 2__proto__: Array[0] 

мне нужно доступ к конкретным данным из этого массива, а именно: school_name. Это вообще возможно?

+2

Конечно. 'city ['schools']' представляет собой массив школ, поэтому просто перебирайте их. См. [Доступ/процесс (вложенные) объекты, массивы или JSON] (http://stackoverflow.com/questions/11922383/access-process-nested-objects-arrays-or-json) –

+1

Феликс - мастер здесь. Если он ссылается на статью, прочитайте статью. Изучите это. Понимать это. Истинное счастье будет вашим. – gibberish

+0

Я могу использовать 'console.log (data ['school_name']);' чтобы получить имя одной школы, но это уже в цикле .each, поэтому я сделал 'jQuery.each (json ['schools'], функция (индекс, город) ', которая проходит через массив и получает данные о школах. Мне просто нужно внутри цикла, чтобы получить каждое школьное имя, которое есть все. –

ответ

0
console.dir(school) 

- Может дать вам более четкое представление о том, что вы видите.

Как сказал другой плакат, поскольку школа представляет собой множество школ, вам лучше всего перебирать ее. Вы можете использовать метод .each, который вы в настоящее время используете в другом месте через jQuery или стандарт для цикла в javascript.

for (var i = 0; i < schools.length; i++) { 
    //Party with stuff in here 
} 

Удачи!

0

Это jQuery.each напечатает данные школы:

jQuery.each(response.schools.schools, function (i, school) { 
     console.log("id " + school["id"] + ", school_name: " + school["school_name"] ); 
    }); 

или альтернативные

jQuery.each(response.schools.schools, function (i, school) { 
    console.log("id " + school.id + ", school_name: " + school.school_name ); 
}); 

Печать:

ID 5, school_name: Другой лондон школа Парк Inner Circle регента, Лондон

id 6, school_name: город лондонской школы 107 Queen Victoria St Lon don

примечание мой fiddle осуществлен без запроса JSON.

+1

Могу ли я использовать это внутри моего jQuery.each? –

+0

@Mdunbavan да, он выглядит например, jQuery.each и цикл for делают то же самое. Это был первый раз, когда я использовал метод jQuery.each и кажется очень удобным :-) – jyrkim

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