JSON NSNumber 错误返回

Posted

技术标签:

【中文标题】JSON NSNumber 错误返回【英文标题】:JSON NSNumber returning incorrectly 【发布时间】:2015-02-05 09:14:54 【问题描述】:

我开始使用带有 Objective-C 的 JSON,我已从服务器检索数据,并按预期获得了 NSDictionary

例如,我的字典中有两个值。

lengthstart

length 按预期返回,NSNumber268。然而,start 显然也有一个 NSNumber(我希望它会这样)正在处理一长串数字,就好像它的格式不正确。

例如start = 1423113951.

如何确定我收到的数据类型?它被正确解析了吗?以及我应该如何处理它?

我知道start 是一个数字,它应该返回类似于length,但我得到的长数字几乎每次运行时都相同,所以它显然没有正确格式化。

我只需记录我从以下地址返回的NSDictionary 即可获得这些值:

NSMutableDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];

一些额外的细节,这是我对数据的要求:

NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://secretAddress"]];
        NSData *data = [NSData dataWithContentsOfURL:url];

        NSError *error;
        NSMutableDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];

NSLog(@"%@", json);

可以理解,这可能是服务器如何将其发送回给我,但目前我不知道它是如何发送的。

【问题讨论】:

传递给webservice的实际值是多少,我的意思是起始值? 如何将值转换为 NSNumber 如果我没记错 NSJSONSerialization 将字符串作为值返回 添加了一些额外的细节来显示完整的代码。收到字典后,我刚刚登录了[json objectForKey:@"start"] class],它告诉我这是一个NSNumber。或者这是一个潜在的误解? 我建议你尝试其他的,然后只是苹果,我会尝试使用 Advanced REST 客户端来验证数据。 是的,它对于测试您所依赖的 REST API 非常有用,这可以为您节省大量时间...看起来确实像服务器问题 :) 【参考方案1】:

每当我在解析 JSON 数据时遇到问题,我要做的第一件事就是在我解析数字的代码行上放置一个断点,然后检查我的 NSDictionary 项的内容:

正如您在此示例中所见,XCode 报告我的 JSON Web 服务中的 NoteIDNSNumber,但很高兴让我将其值提取到 int 中。

所以,从这里开始:检查您的网络服务数据的内容,看看这是否为您指明了正确的方向。

【讨论】:

以上是关于JSON NSNumber 错误返回的主要内容,如果未能解决你的问题,请参考以下文章

insertNewObjectForEntityForName:inManagedObjectContext:返回 NSNumber 错误?

insertNewObjectForEntityForName:inManagedObjectContext: 返回 NSNumber 错误?

NSNumber doubleValue 0 不完全返回 0

React Native - nsnumber类型的json值'0'无法转换为nsstring

NSNumber 值在 JSON 对象转换为数据时发生变化,然后该数据再次转换回 JSON 对象

将 JSON ARRAY 转换为 NSNumber 数组