2013-08-07 2 views
2

JSON spec에 따르면 문자열은 합법적 인 JSON 값입니다.JSON.parse ("string")가 실패하는 이유

enter image description here

왜 이런 일이 발생 하는가?

+0

이것은 json이 올바른 형식이 아닐 때 발생합니다. JSON.parse가 작동하려면 문자열이 올바른 형식이어야합니다. 더 명확한 ans를 위해 json을 게시하십시오. – vipulsharma

+1

나는 그랬다. 그것은 이미지에 있습니다. – Tyrsius

답변

10

실제 유효한 단어 인 JSON이 아니기 때문에 실제로 string이라는 단어가 전달됩니다. . 실제로"string는 "당신은 당신의 자바 스크립트에주의해야 할 값을 전달하기 위해

을이 시도 :

JSON.parse("\"string\"") 

따옴표의 추가 쌍 이스케이프해야합니다 그들은 당신이 통과 값의 일부가 될 수 있도록 기능에

+0

왜 투표가 늦습니까? 이것은 정답입니다! –

+0

모르겠지만 첫 번째 upvote를 아주 완벽하게 설명 할 수 있습니다. – Potatoswatter

+0

나는 downvote하지 않았지만, 당신은 증명을 위해 실제 spec을 참조 할 수있다. JSONString은 유효합니다. [ECMA 표준]에있는 "15.12.1.2 The JSON Syntactic Grammar"(http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf)에서 볼 수 있습니다. – eis

0

구문 오류가 당신을 알려줍니다. "들"예기치 않은 토큰 인 문자열이 유효한 JSON 값이지만 사양 설명으로는 큰 따옴표로 묶어야합니다

string 
    "" 
    " chars " 
0..

일반적으로 JSON.stringify(myValue)을 사용하여 올바른 형식의 JSON 문자열을 확인할 수 있습니다.

0

JSON의 문자열은 따옴표로 묶어야하며 호출에서 JSON.parse은 구문 분석하도록 요청 된 텍스트의 일부로 따옴표를 "보지"않습니다. 우리가 사용되는 참조 이중 따옴표에 전달하는 법적 문자열을 형성한다 - 그들은 우리가 전달하는텍스트의 일부가 아닌 것

이 호출이 작동합니다.

JSON.parse('"s"') 
관련 문제