NSLSONSerialization在DBL_MAX上失败

时间:2013-04-22 20:28:40

标签: ios json parsing

我遇到了包含大型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替换为(更大)更小的值,则测试按预期完成。

0 个答案:

没有答案