当使用系统自带的NSJSONSerialization 将请求返回的data转换为NSDictionary或NSArray 时有可能为null,这时可能是json中包含中文字符,我们可以改变编码格式对获取到的data数据先用CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000)编码转换为NSString,再转成NSData ,最后再使用NSJSONSerialization解析,具体如下:
NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);
//
NSString *receiveStr = [[NSString alloc]initWithData:data encoding:enc];
// 字符串再生成NSData
NSData * data = [receiveStr dataUsingEncoding:NSUTF8StringEncoding];
//再解析
NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil];