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

Author: Lucky, 2011-12-15

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.
 210
Author: kennytm,
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));
 33
Author: ScrapCode,
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"]
 0
Author: Camp bell,
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