2012-02-21 3 views
1

어떻게 든 아래 json 구조가 있고 내 질문은 내가 myJson[0].name처럼 사용할 수 있고 그래서 "M\\xe9t\\xe9o" = Météo이라는 경고를하기 위해 jQuery와이를 어떻게 파싱 할 수 있는가입니다.json이 특수 문자가있는 Json을 구문 분석하는 방법은 무엇입니까?

Jquery는 이것이 잘못된 json이라고 알려줍니다. 이유가 무엇입니까? Json은 단일 백 슬래시 ("M \ xe9t \ xe9o")를 사용하는 경우 이중 백 슬래시를 사용합니다. Jquery는 구문에서 정상입니다.

var jsonObj = '{"title":[{"id":"1","name": "M\\xe9t\\xe9o"},{"id":"2","name": "Meteo"}]}'; 

var myJson = jQuery.parseJSON(jsonObj); 

답변

1

JSON syntaxallows\uxxxx 탈출.
"M\\u00e9t\\u00e9o"으로 변경하십시오.

단일 백 슬래시를 사용하는 경우 Javascript 문자열 리터럴로 구문 분석되므로 실제 문자열 값에는 실제 유니 코드 문자가 포함되며 이스케이프는 포함되지 않습니다. 즉, "M\xe9t\xe9o" === "Météo"

+0

내 나쁜 생각으로 받아 들였다 \\ x \ xxxxxx로 변경됩니다. – Marcio

0

json이 잘못 (수동으로) 인코딩 된 것 같습니다. UTF-8로 인코딩하면 (예 : PHP를 사용하면 다음과 같이 나타납니다.

{"title":[{"id":"1","name": "M\u00e9t\u00e9o"},{"id":"2","name": "Meteo"}]} 

정확하게 JS에서 파싱됩니다. 그러나 \xe9은 파서가 인식 할 수 없습니다.

관련 문제