iOS报错

作者: 霸_霸霸 | 来源:发表于2019-04-19 11:38 被阅读0次
  1. NSCocoaErrorDomain Code=3840 "Garbage at end."

1. NSCocoaErrorDomain Code=3840 "Garbage at end."

我们在对JSON字符串转换为字典的过程中,有时候会遇到这个错误,原因是:JSON字符串结尾有垃圾

那么这个垃圾是什么呢?

我们首先想到通过打印字符串来查看这个垃圾,但是打印的字符串并没有看到结尾有任何垃圾

经过我一番查找,发现,是由于\0这个字符的锅,\0在C语言中表示的是字符串结尾的标志,所以有时候它会混入到字符串中,看个例子

NSString *str = @"{\"name\":\"Jack\"}\0";
image.png
通过打印,并不能看到末尾的\0字符

解决方法
\0字符串替换掉即可

NSError *err2;
NSString *str = @"{\"name\":\"Jack\"}\0";
NSString *str3 = [str stringByReplacingOccurrencesOfString:@"\0" withString:@""];
NSData *data2 = [str3 dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *dic2 = [NSJSONSerialization JSONObjectWithData:data2 options:NSJSONReadingMutableContainers error:&err2];

相关文章

网友评论

      本文标题:iOS报错

      本文链接:https://www.haomeiwen.com/subject/chkqgqtx.html