JSON.parse error de carácter inesperado

112

Me sale este error:

JSON.parse: carácter inesperado

cuando ejecuto esta declaración en firebug:

JSON.parse({"balance":0,"count":0,"time":1323973673061,"firstname":"howard","userId":5383,"localid":1,"freeExpiration":0,"status":false});

¿Por que es esto entonces? 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 enapplication/json

Krishna
fuente

Respuestas:

224

No está analizando una cadena, está 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.
Kennytm
fuente
Quiero votar a favor de la primera oración, pero ¿por qué volvería a analizar?
Mathletics
1
@MarcelKorpel, Mathletics: Correcto. Actualizado.
kennytm
@Mathletics Por todas las cuentas, JSON.parse realiza un control de seguridad. NT
BF
5
Eso es hilarante. Quiéralo. <3
Darth Egregious
1
No estoy definido en data.results (los datos son un objeto JSON). Stack me dice que lo convierta en un objeto js mediante data = JSON.parse (data). Pero recibo un error de carácter inesperado JSON.parse.
KasparTr
35

Puede asegurarse de que el objeto en cuestión esté en cadena antes de pasarlo a la función de análisis simplemente usando JSON.stringify().

Actualizó su línea a continuación,

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));
ScrapCode
fuente
3
JSON.stringify es el jefe.
Kenmeister
-1

No es cierto para el OP, pero este error puede deberse al uso de comillas simples ( ') en lugar de dobles ( ") para las cadenas.

La especificación JSON requiere comillas dobles para las cadenas.

P.ej:

JSON.parse(`{"myparam": 'myString'}`)

da el error, mientras que

JSON.parse(`{"myparam": "myString"}`)

no. Tenga en cuenta las comillas alrededor myString.

Relacionado: https://stackoverflow.com/a/14355724/1461850

atomh33ls
fuente