IOS 请求的JSON转换成字典直接使用
IOS 开发项目中,一般使用的是AFNetworking,请求到的JSON数据会转换成字典使用。
但是在做【本地推送】的时候,服务器返回的JSON数据直接通知传递过来,并未转换。直接使用直接导致崩溃或者无法正常解析。所以需要我们单独解析JSON数据
操作方法
- 01
直接使用方法: - (NSDictionary *)dictionaryWithJsonString:(NSString *)jsonString { if (jsonString == nil) { return nil; } NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding]; NSError *err; NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&err]; if(err) { NSLog(@"json解析失败:%@",err); return nil; } return dic;} 在需要使用的位置直接调用: NSDictionary *jsonDic = [self dictionaryWithJsonString:[userInfo objectForKey:@"matchStatus" ]];
- 02
附带两种相互转换方式 //JSON串转换成字典或者数组+(id)toArrayOrNSDictionary:(NSData *)jsonData{ NSError *error = nil; id jsonObject = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingAllowFragments error:nil]; if (jsonObject != nil && error == nil) { return jsonObject; }else{ NSLog(@"JSON解析错误:%@",error); return nil; }} //字典或者数组转换成JSON串+(NSData *)toJSONData:(id)theData{ NSError *error = nil; NSData *jsonData = [NSJSONSerialization dataWithJSONObject:theData options:NSJSONWritingPrettyPrinted error:nil]; if ([jsonData length] && error == nil) { return jsonData; }else{ NSLog(@"转换失败:%@",error); return nil; }}