Usar uma matriz JSON com objectos com javascript

Eu tenho uma função que irá obter uma matriz JSON com objectos. Na função serei capaz de percorrer a matriz, aceder a uma propriedade e utilizar essa propriedade. Assim:

Variável que passarei para a função terá este aspecto:

[{"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
}

Alguma sugestão de como o posso resolver?

Isto é't um único objecto JSON. Tem um conjunto de objectos JSON. É necessário passar primeiro por cima da matriz e depois aceder a cada objecto. Talvez o seguinte exemplo de pontapé de saída seja útil:

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);
}

Para saber mais sobre o JSON, consulte este artigo.

Actualização: se o conjunto de objectos do JSON for realmente passado como um fio de baunilha simples, então de facto precisaria de aval() aqui.

var string = '[{"id":28,"Title":"Sweden"}, {"id":56,"Title":"USA"}, {"id":89,"Title":"England"}]';
var arrayOfObjects = eval(string);
// ...
Comentários (5)

Por ' matriz JSON contendo objectos' acho que se refere a um fio contendo JSON?

Se assim for, pode utilizar o método seguro var myArray = JSON.parse(myJSON) (nativo ou incluído utilizando JSON2), ou o método usafe var myArray = eval("(" + myJSON + ")"). eval deve normalmente ser evitado, mas se tiver a certeza de que o conteúdo é seguro, então não há problema.

Depois disso, apenas itera sobre a matriz como de costume.

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

A sua pergunta parece um pouco incompleta, mas penso que o que você're procura é uma forma de tornar o seu JSON acessível ao seu código:

se tiver o fio JSON como acima, então você'só precisa de fazer isto

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

então pode aceder a estas vars com algo como jsonObj[0].id etc

Avisem-me se'não era aí que queriam chegar e eu'tentarei ajudar.

M

Comentários (2)