Используйте массив JSON с объектами с JavaScript

У меня есть функция, которая получит массив JSON с объектами. В функции я смогу циклично выполниться через массив, получить доступ к свойству и использовать то свойство. Как это:

Переменная, которую я передам функции, будет похожа на это:

[{"id":28,"Title":"Sweden"}, {"id":56,"Title":"USA"}, {"id":89,"Title":"England"}]

function test(myJSON)
{
    // maybe parse my the JSON variable?
    // and then I want to loop through it and access my IDs and my titles
}

Какие-либо предложения, как я могу решить его?

31
задан ahsteele 18 December 2012 в 04:41
поделиться

3 ответа

Это не один объект JSON. У вас есть массив объектов JSON. Вам нужно сначала выполнить цикл по массиву, а затем получить доступ к каждому объекту. Возможно, вам поможет следующий пример:

var arrayOfObjects = [{"id":28,"Title":"Sweden"}, {"id":56,"Title":"USA"}, {"id":89,"Title":"England"}];

for (var i = 0; i < arrayOfObjects.length; i++) {
    var object = arrayOfObjects[i];
    for (var property in object) {
        alert('item ' + i + ': ' + property + '=' + object[property]);
    }
    // If property names are known beforehand, you can also just do e.g.
    // alert(object.id + ',' + object.Title);
}

Чтобы узнать больше о JSON, ознакомьтесь с этой статьей.

Обновление: если массив объектов JSON на самом деле передается как обычная строка, то вам действительно понадобится eval() здесь.

var string = '[{"id":28,"Title":"Sweden"}, {"id":56,"Title":"USA"}, {"id":89,"Title":"England"}]';
var arrayOfObjects = eval(string);
// ...
52
ответ дан 27 November 2019 в 21:57
поделиться

Под "массивом JSON, содержащим объекты", я полагаю, вы подразумеваете строку, содержащую JSON?

Если да, то вы можете использовать безопасный var myArray = JSON. parse(myJSON) метод (либо родной, либо включенный с помощью JSON2), либо безопасный var myArray = eval("(" + myJSON + ")"). Обычно eval следует избегать, но если вы уверены, что содержимое безопасно, то проблем нет.

После этого вы просто выполняете итерацию по массиву как обычно.

for (var i = 0; i < myArray.length; i++) {
    alert(myArray[i].Title);
}
4
ответ дан 27 November 2019 в 21:57
поделиться

Ваш вопрос кажется немного неполным, но я думаю, что вы ищете способ сделать ваш JSON доступным для вашего кода:

если у вас есть строка JSON, как указано выше, то вам просто нужно сделать вот это

var jsonObj = eval('[{"id":28,"Title":"Sweden"}, {"id":56,"Title":"USA"}, {"id":89,"Title":"England"}]');

затем вы можете получить доступ к этим vars с помощью чего-то вроде jsonObj[0].id и т.д.

Дайте мне знать, если это не то, что вы хотели сказать, и я постараюсь помочь.

M

2
ответ дан 27 November 2019 в 21:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: