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