我一直在尝试解析这个 json,但没有成功:
[{"op":"replace","path":"/pending_coins","value":20}]
我想要20的值所以我可以做
int quantity = jsonValue; //20
这是我目前拥有的:
NSArray *patch =[NSJSONSerialization JSONObjectWithData:anEvent.data options:NSJSONReadingMutableContainers error:&e];
NSDictionary *dict = patch[0];
NSLog(@"patch: %@", dict);
NSInteger quantity = (NSInteger)[dict valueForKey:@"value"];
NSLog(@"quantity: %ld",(long)quantity);
if (quantity > 0) {
NSLog(@"You earned %ld coins!",(long)quantity);
}
我已经尝试了 objectForKey
和 valueForKey
,但似乎都无法满足我的需求。
如果我这样做 [NSString stringWithFormat:@"%@",[patch valueForKey:@"value"]]
我得到一个字符串值 20,但是 intValue
和 integerValue
似乎无法满足我的需求。
现在,日志显示:
数量:-5764607523034234845
有什么地方出错了吗?我无法控制 JSON,或者我只会修复对象周围的外部数组。
最佳答案
反序列化时,JSON 字典中的整数将映射到 NSNumber
的实例,它有多种方法来检索标量值。
要从 JSON 中获取 NSInteger
,您需要执行以下操作:
NSNumber *number = [dict objectForKey:@"value"];
NSInteger quantity = [number integerValue];
关于iOS/Objective C 解析 JSON 获取 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42585490/