- 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];
网友评论