0

我的回复包含带有 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];
4

1 回答 1

2

问题是 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];
于 2020-02-11T15:56:02.873 回答