array - string to json javascript
¿Cómo convierto una cadena JSON a un objeto JavaScript en jQuery? (7)
Tengo una cadena en mi base de datos. Quiero ingresar a mi página y convertirla a un objeto de JavaScript.
[
{id: 1,title: "Long Event",
start: new Date(2009, 5, 6, 14, 0),end: new Date(2009, 5, 11)},
{id: 2,title: "Repeating Event",
start: new Date(2009, 5, 2)},
{id: 3,title: "Meeting",
start: new Date(2009, 5, 20, 9, 0)},
{id: 4,title: "Click for Facebook",
start: new Date(2009, 5, 27, 16),end: new Date(2009, 5, 29),
url: "http://facebook.com/"}
]
¿Cómo puedo hacer esto usando jQuery?
¿ JQuery-json plugin JQuery-json ?
¿Qué tal eval ()?
var obj = eval (jsonString);
A partir de jQuery 1.4.1 puedes hacer esto de forma nativa
jQuery.parseJSON
Ver la documentación de jQuery .
Eche un vistazo al plugin JQuery-json
var thing = {plugin: ''jquery-json'', version: 1.3};
var encoded = $.toJSON(thing); //''{"plugin": "jquery-json", "version": 1.3}''
var name = $.evalJSON(encoded).plugin; //"jquery-json"
var version = $.evalJSON(encoded).version; // 1.3
La secuencia de comandos "oficial" json2.js incluye 2 métodos: uno que analizará con seguridad cualquier serie JSON a un objeto (JSON.parse) y otro que convertirá un objeto en una cadena JSON (JSON.stringify)
El script se puede encontrar here .
En mi publicación anterior, sugerí eval (), pero en realidad hay una manera ligeramente mejor de evaluar JSON (si no quieres usar el script json2.js):
var obj = (new Function("return " + json))();
usando el script json2.js:
var obj = JSON.parse(json);
Si bien puedes usar el comando eval, primero debes verificarlo para mayor seguridad. Yo suelo:
var data = !(/[^,:{}/[/]0-9./-+Eaeflnr-u /n/r/t]/.
test(source.replace(/"(//.|[^"//])*"/g, '''')))
&& eval(''('' + source + '')'');
Eso debería funcionar (se ha ajustado un poco desde el original). El punto clave es que la cadena JSON está marcada para evitar que las funciones y otros códigos ejecutables se filtren. (La primera expresión regular es el bit importante).
Dicho esto, el plugin JSON es muy bueno.
utilizar
jQuery.getJSON(url, data, callback)
o pase "json" como el type
parameter:
jQuery.get( url, data, callback, type )
lo mismo se aplica a:
jQuery.post( url, data, callback, type )
* todo en caso de que esté buscando la "cadena" de una solicitud de ajax