【问题标题】:iOS NSJSONSerialization returns null when it contains base64 stringiOS NSJSONSerialization 在包含 base64 字符串时返回 null
【发布时间】:2020-02-11 14:45:06
【问题描述】:

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

【问题讨论】:

  • 在不知道data 的情况下回答这个问题是相当不可能的。打印整个jsonError 对象而不是其localizedDescription 属性以获得更有意义的错误消息。和你的previous question有什么区别?
  • {"data":{"result":0, "img":"iVBORw0KGgoAAAANSU.....5ErkJggg=="}} 这是我的回应。当我尝试序列化时,如果给出错误。(“无法读取数据,因为它的格式不正确。”)。所以我改变了一些角色并得到了回应。请帮助我在不改变数据的情况下进行序列化。
  • 我已经从 github 回复了你的邮件。 jsonError 对象是 "Error Domain=NSCocoaErrorDomain Code=3840 "字符 124 周围未转义的控制字符。" UserInfo={NSDebugDescription=字符 124 周围未转义的控制字符。}"

标签: ios objective-c base64 nsjsonserialization tobase64string


【解决方案1】:

问题是 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];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-06
    • 2016-11-20
    • 1970-01-01
    • 2014-11-05
    相关资源
    最近更新 更多