NSJsonSerialization을 사용하여 서버에서 오는 JSON을 역 직렬화하려고합니다. 서버는 문자열로 변환 된 png 이미지를 반환합니다. 내 코드는 다음과 같습니다.
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:urlString]];
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
NSError *deserializationError;
id jsonObject = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers | NSJSONReadingMutableLeaves error:&deserializationError];
if (deserializationError) {
NSLog(@"JSON deserialization error: %@", deserializationError.localizedDescription);
return;
}
} ];
다음은 서버에서받은 내용입니다.
{"photo":"�PNG\r\n\u001A\n\u0000\u0000\u0000\rIHDR\u0000\u0000\u0000:\u0000\u0000\u0000:\b\u0002\u0000\u0000\u0000n��\u007F\u0000\u0000\u001FrIDATx�}z\u0005W[y��|��..."}
하지만 JSON 구문 분석 오류가 있습니다. "JSON deserialization 오류 : 작업을 완료 할 수 없습니다. (Cocoa 오류 3840.)". 문제는 JSON 형식에 있다고 생각합니다. 그러나 서버 측을 작성하는 사람들은이 객체를 성공적으로 역 직렬화 할 수 있다고 말합니다. 이 JSON을 처리하는 방법에 대한 제안이 있습니까?
내가 아는 한 JSON 응답은 문자열이어야합니다. 얻는 이미지는 JSON 구문 분석을 중단하는 이미지 데이터처럼 보입니다 NSPropertyListErrorMinimum
( Cocoa error domain : 3840 ). 서버 측 JSON은 base64 문자열로 인코딩 된 이미지를 보내야합니다. 이것은 클라이언트 측에서 유효한 JSON을 유지합니다 ..
base64로 인코딩 된 이미지를 디코딩하여 클라이언트 측에서 이미지 데이터를 가져올 수 있습니다. 이 NSData
범주 를 사용 하면 base64 문자열을 NSData
.
NSData *imageData = [NSData dataWithBase64EncodedString:base64JSONString];
// Create image with data
UIImage *image = [[UIImage alloc] initWithData:imageData];
도움이 되었기를 바랍니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다