Bruno,
aquí está el método de jQuery, que como se verá, utiliza el mismo auto nueva función ("retorno ..) negocio.
parseJSON: function (a) {
if (typeof a !== "string" || !a) return null;
if (/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, "@")
.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]")
.replace(/(?:^|:|,)(?:\s*\[)+/g, "")))
return z.JSON && z.JSON.parse ? z.JSON.parse(a) : (new Function("return " + a))();
else c.error("Invalid JSON: " + a)
}
[editar] la expresión regular es, por supuesto 'tratar' con cualquier carácter delincuentes incrustados dentro del ther cadena JSON.
aunque espeluznante :)
sin o sin marcos (jQuery, etc.)? – kennytm
(Y, por favor, no 'eval'.) – kennytm
jQuery hace eso? ¿Cómo? – BrunoLM