我的响应包含带有base64String的图像。
NSError *jsonError = nil;
id jSon = [NSJSONSerialization JSONObjectWithData:data options:(0) error:&jsonError];
错误文本是
"无法读取数据,因为它的格式不正确。 ">
请帮助我解析这些数据。
如果我转换响应,我破坏了图像base64String,那么我无法加载它。
NSString *stringData = [[NSString alloc] initWithData:data encoding:(NSUTF8StringEncoding)];
NSString *str1 = [stringData stringByReplacingOccurrencesOfString:@"n" withString:@""];
NSString *str2 = [str1 stringByReplacingOccurrencesOfString:@"\" withString:@""];
NSString *str = [str2 stringByReplacingOccurrencesOfString:@"+" withString:@"%2B"];
NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];
jsonError = nil;
jSon = [NSJSONSerialization JSONObjectWithData:data options:0 error:&jsonError];
问题是 base64 编码字符串包含linefeed
个字符,这些字符必须在 JSON 字符串中进行转义。如果您负责服务器端,则发送 base64 编码字符串,而不在每 64 个字符后插入换行符。
否则,删除换行符就足够
了NSString *stringData = [[NSString alloc] initWithData:data encoding:(NSUTF8StringEncoding)];
NSString *str1 = [stringData stringByReplacingOccurrencesOfString:@"n" withString:@""];
NSData *data = [str1 dataUsingEncoding:NSUTF8StringEncoding];
jsonError = nil;
jSon = [NSJSONSerialization JSONObjectWithData:data options:0 error:&jsonError];