좋아, PHP 5.3 서버에서 손으로 만든 JSON (5.3에서 json_encode
함수에 JSON_UNESCAPE_UNICODE
이 없기 때문에)을 처리하고 있고 this thread을 읽고 몇 가지 테스트를 한 후에 다음과 같은 문제를 발견했습니다. jQuery의 parseJSON
기능.왜 jQuery.parseJSON은 개행을 허용하지 않습니까?
한다고 가정 나는 다음과 같은 JSON가 : 당신이 jsonlint.com를 사용하여 선택하면
{
"hello": "hi\nlittle boy?"
}
은 당신이 올바른 JSON입니다 볼 수 있습니다. 그러나 다음을 시도하면 오류 메시지가 표시됩니다.
$(function(){
try{
$.parseJSON('{ "hello": "hi\nlittle boy?" }');
} catch (exception) {
alert(exception.message);
}
});
jQuery에서 bug report을 열었습니다. 올바른 버그라고 생각하기 때문입니다. 어떻게 생각해?
음 나는 그것이 비록 버그없는 정말 모르겠어요. 자바 스크립트에서 문자열 리터럴을 처리하는 방법에도 불구하고, jQuery는 문자가 개행 문자인지 확인해야합니다. http://jsfiddle.net/UTVcW/ –
@JoseTomasTocino - 가능합니다. . 하지만 JSON 구문 분석기는 리터럴 "제어 문자"(예 : '캐리지 리턴'및 '라인 피드')를 해당 정의에서 명시 적으로 제외하는 [JSON 사양] (http://www.json.org/)을 따르지 않습니다. 유효한 문자열. 그래서 이것이 버그라면 jQuery (또는 다른 사람의 것) 구현의 버그가 아니라 스펙의 버그입니다. – aroth
글쎄, JSON 사양에서 [문자열 시퀀스] (http://www.json.org/string.gif)는 "\ n"문자를 받아 들일 것으로 보인다. (사실 그것은 두 개의 문자가 될 것이다. jQuery의 파서에 예외를 추가하는 것이 현명 할 것입니다. 그래서 하나의 문자 "\ n"이 있다면, 그것들을 2-chracter "\ n"에 연결하고 들어오는 문자열을 받아들입니다. 달리 행동하면 해로울 수있는 경우는 생각할 수 없습니다. –