2013-08-11 8 views
0

NSURLConnectionNSJSONSerialization을 사용하여 JSON API의 데이터를 다운로드 중입니다. JSON은 모두 &을 HTML 앰퍼샌드 리터럴과 같이 반환합니다 : &.JSON API의 iOS 인코딩 문자열

UTF-8에서 유니 코드로 서버에서 제대로 인코딩되어야하고 &으로 수신되었거나 그 작업을 수행해야하는 경우 궁금합니다. 나는이 방법은 하나 또는 다른 수의 JSON 사양의 요구 사항이 믿지 않는

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:api_url]]; 
    NSOperationQueue *queue = [[NSOperationQueue alloc] init]; 
    [NSURLConnection sendAsynchronousRequest:request 
             queue:queue 
          completionHandler:^(NSURLResponse *response, NSData *data, NSError *error){ 
           NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error]; 
           // do work 
          }]; 

답변

0

: 여기

내가 데이터를 다운로드하는 데 사용하는 코드입니다. 개인적으로 내가 제어 할 수있는 API으로 작업 할 때 서버 측에서 수행해야 할 일이 맘에 든다. (더 좋았지 만, 우선 처음에 데이터에서 HTML 마크 업과 같은보기 항목을 유지하는 편이 좋다).

+0

필자의 경우 API가 문자를 올바르게 인코딩하지 않았습니다. 맞습니까? API가 올바른'&'문자를 받기 위해 UTF-8을 사용하여 인코딩해야합니까? 데이터에는 HTML 마크 업이 없으므로 왜 API 개발자에게 '&'이 있는지 잘 모르겠습니다. – darksky

+0

올바른데, JSON은 유니 코드로되어 있습니다. API에는 이스케이프 처리 된 HTML & 문자 시퀀스 대신 & 문자가 포함될 수 있습니다. 콘텐트를 직접 제공 한 웹 응용 프로그램에서 콘텐트를 사용 중이기 때문에/돌아 오는 &을 반환한다고 가정합니다. –

0

JSON은 일부 유니 코드 형식으로 인코딩되어야합니다. 형식은 UTF-8, UTF-16 빅 엔디안 또는 리틀 엔디안 또는 UTF-32 빅 엔디 언 또는 리틀 엔디안이 될 수 있습니다. JSON 문자열의 문자는 \ u007f와 같이 인코딩 될 수 있지만, & 문자가 있으면 서버에서 보내려는 데이터입니다. 예를 들어, 서버가 html이나 URL을 포함하는 문자열을 보낼 수 있으며 그 문자열을 & 자 및 모두와 함께 수신합니다.