JSON 구문 분석 중 "예기치 않은 토큰 o" 오류가 발생했습니다.
단순한 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 interpreter가 이미 해석해 주었습니다.
var cur_ques_details ={"ques_id":15,"ques_title":"jlkjlkjlkjljl"};
document.write(cur_ques_details['ques_title']);
구문 분석을 시도합니다.
var yourval = jQuery.parseJSON(JSON.stringify(data));
사용.JSON.stringify(data);
:
$.ajax({
url: ...
success:function(data){
JSON.stringify(data); //to string
alert(data.you_value); //to view you pop up
}
});
그러나 오류의 원인은 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>
cur_ques_details
이미 JS 오브젝트이므로 해석할 필요가 없습니다.
응답은 이미 구문 분석되었으므로 다시 구문 분석할 필요가 없습니다.그것을 다시 해석하면, 「」가 표시됩니다.unexpected token o
". 문자열로 가져오려면 를 사용할 수 있습니다.JSON.stringify()
jQuery AJAX를 사용하여 데이터를 제출했을 때도 같은 문제가 있었습니다.
$.ajax({
url:...
success:function(data){
//server response's data is JSON
//I use jQuery's parseJSON method
$.parseJSON(data);//it's ERROR
}
});
응답이 JSON이고 이 메서드를 사용하는 경우 얻을 수 있는 데이터는 JavaScript 객체이지만dataType:"text"
data는 JSON 문자열입니다.그 후, 의 사용$.parseJSON
괜찮아요.
나 이거 보고 있었어unexpected token o
(불완전한) 코드가 이전에 실행되어(라이브 새로고침!) 특정 키 로컬 스토리지 값을 로 설정했기 때문에 오류가 발생했습니다.[object Object]
대신{}
키를 바꾸고 나서야 예상대로 작동하기 시작했다.또는 다음 지침에 따라 잘못 설정된 local스토리지 값을 삭제할 수 있습니다.
언급URL : https://stackoverflow.com/questions/15617164/parsing-json-giving-unexpected-token-o-error
'programing' 카테고리의 다른 글
Importorr: libmariadbclient.so18: 공유 개체 파일을 열 수 없습니다.해당 파일 또는 디렉터리가 없습니다. (0) | 2023.01.27 |
---|---|
이름이 없는 로더 'app' 모듈에 있으므로 클래스에 캐스팅할 수 없습니다. (0) | 2023.01.27 |
노드에서 상수를 공유하는 방법JS 모듈? (0) | 2023.01.27 |
이클립스로 어떻게 돌아가? (0) | 2023.01.27 |
Vue 컴포넌트의 맵을 동적으로 갱신할 필요가 있다 (0) | 2023.01.27 |