programing

JSON 구문 분석 중 "예기치 않은 토큰 o" 오류가 발생했습니다.

itsource 2023. 1. 27. 21:38
반응형

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

반응형