[json] 잡히지 않은 구문 오류 예기치 않은 토큰 U JSON

크롬에서 페이지를 실행할 때이 오류 “발견되지 않은 구문 오류 예기치 않은 토큰 U”가 표시됩니다. 그리고 파이어 폭스에서 “JSON.parse : 예기치 않은 문자”를 얻습니다. PHP 파일에서 json 데이터를 반환하고 반환 json 문자열이 유효합니다. http://jsonlint.com/에서 확인했습니다 . 도움을 주시면 감사하겠습니다.

반환 된 JSON 문자열은 다음과 같습니다.

[
    ["1","Pan Africa Market","\"1521 1st Ave, Seattle, WA\"","47.608941","-122.340145","restaurant"],
    ["2","The Melting Pot","14 Mercer St, Seattle, WA","47.624562","-122.356442","restaurant"],
    ["3","Ipanema Grill","1225 1st Ave, Seattle, WA","47.606366","-122.337656","restaurant"],
    ["4","Sake House","230 1st Ave, Seattle, WA","47.612825","-122.34567","bar"],
    ["5","Crab Pot","1301 Alaskan Way, Seattle, WA","47.605961","-122.34036","restaurant"],
    ["6","Mexican Kitchen","2234 2nd Ave, Seattle,WA","47.613975","-122.345467","bar"],
    ["7","Wingdome","1416 E Olive Way, Seattle, WA","47.617215","-122.326584","bar"],
    ["8","Piroshky Piroshky","1908 Pike pl, Seattle, WA","47.610127","-122.342838","restaurant"]
]



답변

이 오류는 일반적으로 주어진 값 JSON.parse이 실제로 일 때 나타납니다 undefined. 따라서이 구문 분석하려고하는 코드를 확인합니다. 대부분 여기에 표시된 실제 문자열을 구문 분석하지 않을 가능성이 큽니다.


답변

MVC 프로젝트에서 유효성을 검사하는 동안이 메시지가 나타납니다. 나를 위해 ValidationMessageFor 요소를 추가 하면 문제가 해결되었습니다.

정확히 말해 jquery.validate.unobtrusive.js의 43 번 줄이 문제를 일으켰습니다.

  replace = $.parseJSON(container.attr("data-valmsg-replace")) !== false;


답변

JSON.parse의 매개 변수는 아무것도 리턴하지 않을 수 있습니다 (예 : JSON.parse에 제공된 값은 undefined)!

xyz.sol 파일에서 Compiled solidity 코드를 구문 분석하는 동안 발생했습니다.

import web3 from './web3';
import xyz from './build/xyz.json';

const i = new web3.eth.Contract(
  JSON.parse(xyz.interface),
  '0x99Fd6eFd4257645a34093E657f69150FEFf7CdF5'
);

export default i;

철자가 틀렸다

JSON.parse(xyz.intereface)

아무것도 반환하지 않았다!


답변

이 오류가 발생하는 가장 일반적인 경우는 컨트롤을 생성 한 다음 방법을 변경 id하거나 name기본 템플릿을 ‘재정의’하여 템플릿을 생성하는 템플릿을 사용하는 것입니다.

@Html.TextBoxFor(m => m, new {Name = ViewData["Name"], id = ViewData["UniqueId"]} )

다음으로 변경 ValidationMessageFor하는 것을 잊고

@Html.ValidationMessageFor(m => m, null, new { data_valmsg_for = ViewData["Name"] })    

이것이 시간을 절약하기를 바랍니다.


답변

for 루프 내 JSONArray에서 찾기 조건을 실행할 때이 오류가 발생했습니다. 내가 직면 한 문제는 for 루프에서 null을 반환하는 값 중 하나의 결과였습니다. 따라서 속성에 액세스하려고 시도했지만 실패했습니다.

따라서 JSONArrays에서 데이터 소스와 무결성을 확신하지 못하는 작업을 수행하는 경우이 경우 null 및 정의되지 않은 예외를 처리하는 것이 좋습니다.

JSONArray에서 find의 반환 값에서 null을 확인하고 예외를 적절하게 처리하여 문제를 해결했습니다.

이것이 도움이 될 것이라고 생각했습니다.


답변

필자의 경우 XHRResponse가 돌아 오기 전에 AJAX 변수에서 JSON.parse ()를 호출하려고했습니다. EG :

var response = $.get(URL that returns a valid JSON string);
var data = JSON.parse(response.responseText);

$ .get에 대한 jQuery 사이트 의 예제로 대체했습니다 .

<script type="text/javascript">
    var jqxhr = $.get( "https://jira.atlassian.com/rest/api/2/project", function() {
          alert( "success" );
        })
          .done(function() {
//insert code to assign the projects from Jira to a div.
                jqxhr = jqxhr.responseJSON;
                console.log(jqxhr);
                var div = document.getElementById("products");
                for (i = 0; i < jqxhr.length; i++) {
                    console.log(jqxhr[i].name);
                    div.innerHTML += "<b>Product: " + jqxhr[i].name + "</b><BR/>Key: " + jqxhr[i].key + "<BR/>";
                }
                console.log(div);
            alert( "second success" );
          })
          .fail(function() {
            alert( "error" );
          })
          .always(function() {
            alert( "finished" );
          });

        // Perform other work here ...

        // Set another completion function for the request above
        jqxhr.always(function() {
          alert( "second finished" );
        });
</script>


답변

당신이 이해하지 못한 경우를 대비하여

예를 들어 JSON 문자열이 있다고 가정 해 봅시다 .. 아직 JSON 객체 또는 배열이 아닙니다.

따라서 자바 스크립트에서 문자열을 다음과 같이 구문 분석하면

var body={
  "id": 1,
  "deleted_at": null,
  "open_order": {
    "id": 16,
    "status": "open"}

var jsonBody = JSON.parse(body.open_order); //HERE THE ERROR NOW APPEARS BECAUSE THE STRING IS NOT A JSON OBJECT YET!!!! 
//TODO SO
var jsonBody=JSON.parse(body)//PASS THE BODY FIRST THEN LATER USE THE jsonBody to get the open_order

var OpenOrder=jsonBody.open_order;

위의 큰 답변