NSJSONSerialization 带整数

Posted

技术标签:

【中文标题】NSJSONSerialization 带整数【英文标题】:NSJSONSerialization with an integer 【发布时间】:2014-01-18 20:51:15 【问题描述】:

我正在编写一个从 Web 请求中获取数据的 ios 应用程序。该请求返回以下内容: "hash":"0369a5d5e65335309b2b1502dc96b5aba691b9451c83b9","error":0

我从NSData* responseData对象获取数据如下:

NSDictionary* JSONdata = [NSJSONSerialization JSONObjectWithData:_responseData options:0 error:&error];

NSInteger responseError = (NSInteger)[JSONdata objectForKey:@"error"];

但是,responseError 未初始化(充满垃圾值)返回。我尝试将 NSInteger 更改为 NSString* 但这会产生以下错误

'NSInvalidArgumentException', reason: '-[__NSCFNumber length]: unrecognized selector sent to instance 0x9d02220'

有什么想法吗?

【问题讨论】:

请阅读灵长类动物与类 【参考方案1】:

您需要使用 NSNumber。原始值不适用于 iOS 解析 NSObjects 中的数据:NSArray、NSDictionary、NSNumber、NSString 和 NSNull。

试试这个:NSNumber *responseError = [JSONdata objectForKey:@"error"];

然后要转换为 NSInteger,您可以这样做:NSInteger responseInt = [responseError integerValue]; 这将返回一个整数值。

为了将来参考,NSDictionary 不能包含任何原始值。

【讨论】:

以上是关于NSJSONSerialization 带整数的主要内容,如果未能解决你的问题,请参考以下文章

NSJSONSerialization 没有返回错误

NSJSONSerialization - 无法将数据转换为字符串

Swift 2 - NSJSONSerialization.JSONObjectWithData 处理错误 [重复]

使用 NSJSONSerialization 解析 twitter 搜索 json 数据

使用 NSDictionary 访问 NSJSONSerialization 数据

NSJSONSerialization生成NSCFString *和NSTaggedPointerString *