Domanda

Sto recuperando un array di oggetti da un campo di input HTML nascosto. La stringa sto ottenendo è:

"{"id":"1234","name":"john smith","email":"jsmith@blah.com"},{"id":"4431","name":"marry doe","email":"mdoe@blah.com"}"

Ora ho bisogno di passare questo come un array di oggetti di nuovo. Come faccio a convertire questa stringa in array di oggetti?

È stato utile?

Soluzione

var array_of_objects = eval("[" + my_string + "]");

Esegue la stringa come codice, che è il motivo per cui abbiamo bisogno di aggiungere il [] per renderlo un oggetto. Questo è anche uno dei pochi usi legittimi per eval come il modo più semplice e veloce. : D

Altri suggerimenti

Supponendo che str detiene sintassi valida JSON, si può semplicemente chiamare eval(str).

Per ragioni di sicurezza, è meglio usare una JSON parser , in questo modo:

JSON.parse(str);

Si noti che str devono essere confezionate in [] essere una matrice JSON valido.

var str=eval([{'id':'1','txt':'name1'},{'id':'2','txt':'name2'},{'id':'3','txt':'name3'}])
for(var i=0;i<str.length;i++)
{
alert(str[i].txt);
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top