Подтвердить что ты не робот

Используйте массив 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
}

Любые предложения, как я могу это решить?

4b9b3361

Ответ 1

Это не один объект 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);
// ...

Ответ 2

Это ваш dataArray:

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

Тогда можно использовать parseJson:

$(jQuery.parseJSON(JSON.stringify(dataArray))).each(function() {  
    var ID = this.id;
    var TITLE = this.Title;
});

Ответ 3

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

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

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

for (var i = 0; i < myArray.length; i++) {
    alert(myArray[i].Title);
}

Ответ 4

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

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

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

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

Сообщите мне, если это не то, что вы получаете, и я постараюсь помочь.

M

Ответ 5

@Swapnil Godambe Он работает для меня, если удаляется JSON.stringfy. То есть:

$(jQuery.parseJSON(dataArray)).each(function() {  
    var ID = this.id;
    var TITLE = this.Title;
});

Ответ 6

var datas = [{"id":28,"Title":"Sweden"}, {"id":56,"Title":"USA"}, {"id":89,"Title":"England"}];
document.writeln("<table border = '1' width = 100 >");
document.writeln("<tr><td>No Id</td><td>Title</td></tr>"); 
for(var i=0;i<datas.length;i++){
document.writeln("<tr><td>"+datas[i].id+"</td><td>"+datas[i].Title+"</td></tr>");
}
document.writeln("</table>");