2016-09-02 15 views
3

Я пытаюсь запросить файл JSON на моем собственном сервере с помощью $.getJSON, а затем ездить на велосипеде внутри объектов. Нет проблем до сих пор, то я не иметь идентификатор, который является именем объекта я хочу вернуться, но не могу показаться, чтобы получить это право:Получить объект от JSON с помощью jQuery

var id = 301; 
    var url = "path/to/file.json"; 
    $.getJSON(url, function(json) { 
    var items = []; 
    items = json; 
    for (var i = 0; i < items.length; i++) { 
     var item = items[i]; 
     console.log(item); 
    } 
    }); 

Это печатает следующее в консоли:

console.log of all the objects in json

Теперь, скажем, я хочу вернуть только объект == к id так, то я могу обратиться к нему, как item.banos, item.dorms и т.д.

Мой первый подход был что-то как

console.log(json.Object.key('301')); 

Который не работает

Любая помощь будет очень высоко ценится.

+3

'console.log (JSON [ '301']));' – jcubic

+0

@jcubic Anwer, вот это – Th0rndike

+0

@KingRider, пожалуйста, используйте английский язык. – jcubic

ответ

3

Похоже, ваш ответ заворачивают в массив с одним элементом.


Вы можете получить доступ к свойствам объекта динамически с помощью квадратных скобок:

var id = 301; 
var url = "path/to/file.json"; 
$.getJSON(url, function(json) { 
    console.log(json[0][id].banos); 
}); 
+0

Это сделало это, нужно немного объяснить, почему я должен использовать квадратные скобки дважды? – user2770956

+0

'[0]' обращается к первому (и только в этом случае) элементу в массиве wrapping. '[id]' обращается к свойству 'id' объекта, извлеченного из массива на первом шаге. – Timo

+0

Должен ли я развернуть массив? – user2770956

1

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

var id = 301; 
 

 
//$.getJSON("path/to/file.json", function(json) { 
 
    // response data from AJAX request: 
 
    var json = { 
 
    '301': { 
 
     banos: 2 
 
    }, 
 
    '302': { 
 
     banos: 3 
 
    }, 
 
    '303': { 
 
     banos: 4 
 
    }, 
 
    '304': { 
 
     banos: 5 
 
    }, 
 
    }; 
 

 
    var item = json[id]; 
 
    console.log(item); 
 
//});

+0

Спасибо за вашу помощь, но это возвращает undefined. Также я не спустил вниз. – user2770956

+0

Я добавил рабочий пример. Если этот код не работает, вам нужно добавить свой реальный JSON к вопросу, а не изображение его консольного представления. –

+0

@ KingRider извините, я понятия не имею, что вы говорите –

0
$.each(items,function(n,value){ 
    if(n==301) 
     alert(value); 
}); 
+1

Просьба предоставить более подробную информацию для ответа, поскольку это сообщение было найдено в сообщении низкого качества. Только код и ответы «попробуйте» не поощряются, поскольку он не предоставляет никакого контента, доступного для поиска, и почему люди должны «попробовать это». – Paritosh

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