웹 서비스의 응답을 처리해야하는 iOS 앱이 있습니다. 이 응답은 JSON 문자열 아닌 JSON 객체임을NSJSONSerialization으로 어떻게 이스케이프 된 JSON 문자열을 비 직렬화 할 수 있습니까?
"{ \"name\" : \"Bob\", \"age\" : 21 }"
참고 : 응답은 다음과 같이 뭔가를 찾고, 직렬화 된 JSON 객체를 포함 직렬화 된 JSON 문자열입니다.
{ "name" : "Bob", "age" : 21 }
을 그리고 내가 NSDictionary
에 그 역 직렬화하는 +[NSJSONSerialization JSONObjectWithData:options:error:]
을 사용할 수 있습니다 : 내가 뭘해야 내가 이것을 얻을 수 있도록 문자열을 역 직렬화입니다.
하지만 첫 단계는 어떻게해야합니까? 즉, 문자열을 "이스케이프 (unescape)"하여 직렬화 된 JSON 객체를 얻는 방법은 무엇입니까? +[NSJSONSerialization JSONObjectWithData:options:error:]
은 최상위 수준 개체가 배열 또는 사전 인 경우에만 작동합니다. 문자열에서는 작동하지 않습니다.
my own JSON string parser이 작성되었으므로 section 2.5 of RFC 4627을 준수하겠습니다. 그러나 나는 NSJSONSerialization
또는 다른 이용 가능한 방법을 사용하여 이것을하기위한 쉬운 방법을 간과 해 왔다고 생각합니다.
는 그냥 선행 및 후행 quoteß을 차단하고 모든'\ "'의 교체 '''. –
그런 다음 가능한 모든 이스케이프 시퀀스에 대해 이스케이프 처리 절차를 반복합니다 (매우 많음). –
'\ uXXXX' 이스케이프 문자열은 검색과 바꾸기가 쉽지 않습니다. –