У меня есть функция, которая будет получать 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
}
Есть предложения, как решить эту проблему?
Это'не один объект 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);
// ...
Это ваш целое без знака
:
[
{
"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;
});
Под '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);
}
Ваш вопрос кажется немного неполным, но я думаю, что вы ищете способ сделать ваш JSON доступным для вашего кода:
Если у вас есть строка JSON, как указано выше, то вам нужно сделать следующее
var jsonObj = eval('[{"id":28,"Title":"Sweden"}, {"id":56,"Title":"USA"}, {"id":89,"Title":"England"}]');
Затем вы можете получить доступ к этим переменным с помощью чего-то вроде jsonObj[0].id и т.д.
Дайте мне знать, если это не то, что вы имели в виду, и я постараюсь помочь.
M
в
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>");
в </скрипт>