programing

js의 이상한 JSON 해석 동작 "예기치 않은 토큰:"

telebox 2023. 3. 8. 21:02
반응형

js의 이상한 JSON 해석 동작 "예기치 않은 토큰:"

jsfiddle에서 설명한 바와 같이 JS 파일이 있고 사용하지 않고 JSON 개체를 생성하면 키(멤버)가 따옴표로 둘러싸여 있는지 여부에 따라 동작이 달라집니다.

다음 중 하나:{ a: 1};
하지 않은 코드: "Code" "Code" :{ "a": 1 };

에러 메세지가 표시됩니다(Chrome에서는 FF/IE에서는 다르지만, 구문에서는 실패합니다).

학습되지 않은 구문 오류:예기치 않은 토큰:

다음과 같습니다.alert({ "a": 1 });이치노

왜 이런 일이 일어날까요?

스테이트먼트:

{ a: 1 };

는 오브젝트 리터럴이 아닙니다.하나의 라벨이 붙어있는 블록스테이트먼트입니다.유효합니다.

이것은, 다음과 같습니다.

{ "a": 1 };

구문 오류입니다. 해석할 수 없기 때문입니다.따옴표로 묶인 "a"는 블록 내에서 표현문을 시작하지만 문자열 다음에 나오는 다음 토큰은 콜론이며 콜론 뒤에 이어지는 표현식 형식은 없습니다.

지금:

var x = { "a": 1 };

는, 되지 않기 합니다.은 '아까운데'로 시작합니다.var변수 선언입니다.가 의미하는 리터럴의입니다.=" 토큰 오른쪽에 있는 식에서 "{"가 의미하는 것은 개체 리터럴의 시작뿐입니다.마찬가지로 다음 사항에 주의해 주십시오.

({ "a": 1 });

괄호를 열면 파서가 중첩된 하위 표현을 예상할 수 있으므로 "{"는 개체 리터럴의 시작임을 명확하게 의미합니다.

JSON을 .require은 '이렇게 하다'로 끝나지 않습니다..json을 사용하다을 「」로 변경.bla.json잘 작동합니다.

AJAX를 사용하여 할 때 .jsonpjsonp는 필요 없습니다. AJAX 의 데이터 을 일반 AJAX .json

$.ajax({
     dataType: 'json', // try using json rather than json p
     ...
});

언급URL : https://stackoverflow.com/questions/10080551/weird-json-parsing-behavior-in-js-unexpected-token

반응형