Does converting NSString to NSData force a trailing byte?
这是对这个错误答案的回应:https://stackoverflow.com/a/7894952/192819
转换nsstring是否如下所示:
1 2 | NSString *str = @"teststring"; NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding]; |
强制尾随 字节,这意味着
1 | -[NSJSONSerialization:JSONObjectWithData:] |
其他人会失败,除非你移除它。
不,不是。请参见此示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys: @"v1", @"k1", @"v2", @"k2", nil]; NSLog(@"dict=%@", dict); NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dict options:0 error:nil]; NSString *jsonAsString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; NSData *jsonDataFromString = [jsonAsString dataUsingEncoding:NSUTF8StringEncoding]; // DO NOT DO THIS: // jsonDataFromString = [jsonDataFromString subdataWithRange:NSMakeRange(0, [jsonDataFromString length] - 1)]; NSDictionary *jsonObject = [NSJSONSerialization JSONObjectWithData:jsonDataFromString options:0 error:nil]; NSLog(@"jsonObject=%@", jsonObject); |
尝试一下,然后用未注释的"请勿执行此操作"行尝试一下。你会发现没问题的。