我遇到了包含大型double的JSON反序列化的问题.基本上,我可以序列化这样的字典
NSDictionary *dict = @{@"doubleVal": @DBL_MAX};
Run Code Online (Sandbox Code Playgroud)
哪个序列化没有麻烦
{"doubleVal":1.797693134862316e+308}
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试对数据进行反序列化,它就会爆炸.
一个小单元测试,演示了这个问题:
- (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);
}
Run Code Online (Sandbox Code Playgroud)
最后一个断言失败,如下:
JSON response error: The operation couldn’t be completed. (Cocoa error 3840.)
Run Code Online (Sandbox Code Playgroud)
如果我DBL_MAX用(更大)更小的值替换,则测试按预期完成.