JSON.analizar error de carácter inesperado
Obtengo este error:
JSON.parse: unexpected character
Cuando corro esta declaración en firebug:
JSON.parse({"balance":0,"count":0,"time":1323973673061,"firstname":"howard","userId":5383,"localid":1,"freeExpiration":0,"status":false});
¿por Qué es así? La cadena JSON me parece correcta y también la probé usando JSHint. El objeto pasado en el caso anterior es una respuesta del servidor con el tipo de contenido establecido en application/json
3 answers
No estás analizando una cadena, estás analizando un objeto ya analizado:)
var obj1 = JSON.parse('{"creditBalance":0,...,"starStatus":false}');
// ^ ^
// if you want to parse, the input should be a string
var obj2 = {"creditBalance":0,...,"starStatus":false};
// or just use it directly.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-12-15 18:37:06
Puede asegurarse de que el objeto en cuestión esté stringificado antes de pasarlo a la función parse simplemente usando JSON.stringify()
.
Actualizado su línea de abajo,
JSON.parse(JSON.stringify({"balance":0,"count":0,"time":1323973673061,"firstname":"howard","userId":5383,"localid":1,"freeExpiration":0,"status":false}));
O si tiene JSON almacenado en alguna variable:
JSON.parse(JSON.stringify(yourJSONobject));
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-02-19 08:45:30
Token inesperado ' en JSON
Tenga en cuenta que JSON.parse
lanzará una excepción si su cadena contiene comillas simples en lugar de dobles.
Una solución simple es usar algunas expresiones regulares para reemplazarlas con comillas de bloque, como así:
function stringToArray(items) {
return JSON.parse("[" + items.replace(/'/g, '"') + "]");
} // "'0', '1'" -> ["0", "1"]
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-12-18 17:35:10