我尝试将相同的 NSDictionary 对象转换为 NSData,然后使用 NSJSONSerialization 和 SBJsonWriter 多次转换为 NSString,有时会得到不同的字符串。甚至为空。这很奇怪,我找不到任何理由。=( JSONKit 和 YAJL 没有这样的问题。以下是我的测试代码。
for (int i = 0; i < 5; i++) {
NSDictionary *d = [NSDictionary dictionaryWithObject:@"value" forKey:@"key"];
NSData *data = [NSJSONSerialization dataWithJSONObject:d options:0 error:nil];
NSLog(@"%@", [NSString stringWithUTF8String:data.bytes]);
}
控制台输出是......
2012-04-25 01:35:33.113 Test[19347:c07] {"key":"value"}
2012-04-25 01:35:33.114 Test[19347:c07] (null)
2012-04-25 01:35:33.114 Test[19347:c07] {"key":"value"}
2012-04-25 01:35:33.114 Test[19347:c07] {"key":"value"}
2012-04-25 01:35:33.115 Test[19347:c07] (null)
每次我运行测试代码时输出都会发生变化。data 的字节大小相同,但 UTF8 转换的字符串长度不同。