iOS NSJSONSerialization在包含base64字符串时返回null

yebdmbv4  于 11个月前  发布在  iOS
关注(0)|答案(1)|浏览(138)

我的响应包含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];

wkftcu5l

wkftcu5l1#

问题是base64编码的字符串包含必须在JSON字符串中转义的linefeed字符。如果您负责服务器端,请发送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];

字符串

相关问题