parse - mostrar datos json javascript
JSON de anĂ¡lisis que da error de "token o inesperado" (8)
Esta pregunta ya tiene una respuesta aquí:
- Sigo recibiendo “ 7 respuestas de sintaxis no detectadas: token inesperado” 7
Estoy teniendo un problema al analizar cadenas JSON simples. Los he comprobado en JSONLint y muestra que son válidos. Pero cuando intento analizarlos utilizando JSON.parse
o la alternativa jQuery, me da el error unexpected token o
:
<!doctype HTML>
<html>
<head>
</head>
<body>
<script type="text/javascript">
var cur_ques_details ={"ques_id":15,"ques_title":"jlkjlkjlkjljl"};
var ques_list = JSON.parse(cur_ques_details);
document.write(ques_list[''ques_title'']);
</script>
</body>
</html>
Nota: estoy codificando mis cadenas usando json_encode()
en PHP.
Estaba viendo este error unexpected token o
porque mi código (incompleto) se había ejecutado previamente (recarga en vivo!) Y configuró el valor de almacenamiento local con clave particular en [object Object]
lugar de {}
. No fue hasta que cambié las llaves, que las cosas empezaron a funcionar como se esperaba. Alternativamente, puede seguir estas instrucciones para eliminar el valor de localStorage configurado incorrectamente .
Intenta analizar así:
var yourval = jQuery.parseJSON(JSON.stringify(data));
La respuesta ya está analizada, no es necesario analizarla nuevamente. Si lo analizas de nuevo, te dará " unexpected token o
". si necesita obtenerlo como una cadena, puede usar JSON.stringify()
Sin embargo, la fuente de su error es que necesita colocar la cadena JSON completa entre comillas. Lo siguiente arreglará su muestra:
<!doctype HTML>
<html>
<head>
</head>
<body>
<script type="text/javascript">
var cur_ques_details =''{"ques_id":"15","ques_title":"jlkjlkjlkjljl"}'';
var ques_list = JSON.parse(cur_ques_details);
document.write(ques_list[''ques_title'']);
</script>
</body>
</html>
Como los otros encuestados han mencionado, el objeto ya está analizado en un objeto JS, por lo que no es necesario analizarlo. Para demostrar cómo lograr lo mismo sin analizar, puede hacer lo siguiente:
<!doctype HTML>
<html>
<head>
</head>
<body>
<script type="text/javascript">
var cur_ques_details ={"ques_id":"15","ques_title":"jlkjlkjlkjljl"};
document.write(cur_ques_details.ques_title);
</script>
</body>
</html>
Sus datos ya son un objeto. No hay necesidad de analizarlo. El intérprete de javascript ya lo ha analizado.
var cur_ques_details ={"ques_id":15,"ques_title":"jlkjlkjlkjljl"};
document.write(cur_ques_details[''ques_title'']);
Tuve el mismo problema cuando envié datos usando jQuery AJAX:
$.ajax({
url:...
success:function(data){
//server response''s data is JSON
//I use jQuery''s parseJSON method
$.parseJSON(data);//it''s ERROR
}
});
Si la respuesta es JSON y usa este método, los datos que obtiene son un objeto de JavaScript, pero si usa dataType:"text"
, los datos son una cadena JSON. Entonces el uso de $.parseJSON
está bien.
Utilizando JSON.stringify(data);
:
$.ajax({
url: ...
success:function(data){
JSON.stringify(data); //to string
alert(data.you_value); //to view you pop up
}
});
cur_ques_details
ya es un objeto JS, no es necesario analizarlo