我遇到了包含大型double的JSON反序列化问题。基本上,我可以像这样序列化一个字典
NSDictionary *dict = @{@"doubleVal": @DBL_MAX};
顺利排列
{"doubleVal":1.797693134862316e+308}
但是,如果我尝试反序列化数据,它就会爆炸。
一个证明问题的小单元测试:
- (void)test_600_doubleJSON {
NSDictionary *dict = @{@"doubleVal": @DBL_MAX};
NSError *jsonError, *jsonResponseError;
NSData *data = [NSJSONSerialization dataWithJSONObject:dict
options:0
error:&jsonError];
id jsonResponse = [NSJSONSerialization JSONObjectWithData:data
options:0
error:&jsonResponseError];
STAssertNil(jsonError, @"JSON error: %@", jsonError.localizedDescription);
STAssertNil(jsonResponseError,
@"JSON response error: %@",
jsonResponseError.localizedDescription);
}
最后一个断言失败并带有以下内容:
JSON response error: The operation couldn’t be completed. (Cocoa error 3840.)
如果我将DBL_MAX
替换为(更大)更小的值,则测试按预期完成。