Ответ 1
Ваши данные уже являются объектом. Не нужно разбирать его. Интерпретатор javascript уже проанализировал его для вас.
var cur_ques_details ={"ques_id":15,"ques_title":"jlkjlkjlkjljl"};
document.write(cur_ques_details['ques_title']);
У меня возникла проблема с анализом простых строк JSON. Я проверил их на JSONLint, и он показывает, что они действительны. Но когда я пытаюсь разобрать их, используя либо JSON.parse
, либо альтернативу jQuery, он дает мне ошибку 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>
Примечание. Я кодирую свои строки с помощью json_encode()
в PHP.
Ваши данные уже являются объектом. Не нужно разбирать его. Интерпретатор javascript уже проанализировал его для вас.
var cur_ques_details ={"ques_id":15,"ques_title":"jlkjlkjlkjljl"};
document.write(cur_ques_details['ques_title']);
Попробуйте разобрать так:
var yourval = jQuery.parseJSON(JSON.stringify(data));
cur_ques_details
уже является объектом JS, вам не нужно его анализировать
Однако источником вашей ошибки является то, что вам нужно поместить полную строку JSON в кавычки. Ниже будет исправлен ваш пример:
<!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>
Как уже отмечали другие респонденты, объект уже разбирается в объект JS, поэтому вам не нужно его анализировать. Чтобы продемонстрировать, как выполнить одно и то же без разбора, вы можете сделать следующее:
<!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>
У меня была такая же проблема, когда я отправил данные с помощью jQuery AJAX:
$.ajax({
url:...
success:function(data){
//server response data is JSON
//I use jQuery parseJSON method
$.parseJSON(data);//it ERROR
}
});
Если ответом является JSON, и вы используете этот метод, данные, которые вы получаете, являются объектом JavaScript, но если вы используете dataType:"text"
, данные являются строкой JSON. Тогда использование $.parseJSON
в порядке.
Использование JSON.stringify(data);
:
$.ajax({
url: ...
success:function(data){
JSON.stringify(data); //to string
alert(data.you_value); //to view you pop up
}
});
Ответ уже разобран, вам не нужно его снова анализировать. если вы снова проанализируете его, он даст вам "unexpected token o
". если вам нужно получить его как строку, вы можете использовать JSON.stringify()
Я видел эту ошибку unexpected token o
, потому что мой (неполный) код выполнялся ранее (live reload!) и задал конкретное ключевое значение локальной памяти [object Object]
вместо {}
. Только когда я сменил ключи, все началось, как и ожидалось. В качестве альтернативы вы можете следовать этим инструкциям, чтобы удалить неверно установленное значение localStorage.