Programing

"예기치 않은 토큰 o"오류를 발생시키는 JSON 구문 분석

lottogame 2020. 2. 19. 21:21
반응형

"예기치 않은 토큰 o"오류를 발생시키는 JSON 구문 분석


이 질문에는 이미 답변이 있습니다.

간단한 JSON 문자열을 구문 분석하는 데 문제가 있습니다. JSONLint에서 확인한 결과 유효하다는 것을 보여줍니다. 그러나 JSON.parsejQuery 대안이나 하나를 사용하여 구문 분석하려고 하면 오류가 발생합니다 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에서 사용하여 문자열을 인코딩하고 있습니다 .


귀하의 데이터는 이미 개체입니다. 파싱 ​​할 필요가 없습니다. 자바 스크립트 인터프리터가 이미 해석했습니다.

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]하는 대신 {}. 키를 변경하기 전까지는 예상대로 작동하기 시작했습니다. 또는 다음 지시 사항에 따라 잘못 설정된 localStorage 값을 삭제할 수 있습니다 .

참고 URL : https://stackoverflow.com/questions/15617164/parsing-json-giving-unexpected-token-o-error



반응형