在 iPhone 中显示 nil 的 JSON 响应
Posted
技术标签:
【中文标题】在 iPhone 中显示 nil 的 JSON 响应【英文标题】:JSON response showing nil in iPhone 【发布时间】:2014-11-06 05:07:02 【问题描述】:我收到来自网络服务的响应。昨天我开始得到 nil JSON,但从响应中我有正确的字节数据。
这是我的代码:
NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:byteData options: NSJSONReadingMutableContainers error:&error];
NSLog(@"jsonDict %@",jsonDict);
byteData 不是 nil,但 jsonDict 是 nil。 我的代码突然不工作了。 这是我从服务中得到的响应:
"DecryptDocAndCreatePDFResult":"abcdhdsgs"
请帮帮我,谢谢。
【问题讨论】:
记录error
。它说什么?
这个编码很好,显示你的 NSLog(@"jsonDict %@",jsonDict);
日志错误是 - Error Domain=NSCocoaErrorDomain Code=3840 “操作无法完成。(Cocoa 错误 3840。)”(JSON 文本没有以数组或对象和允许片段的选项开头未设置。) UserInfo=0x7872cf50 NSDebugDescription=JSON 文本未以数组或对象开头,并且允许未设置片段的选项。
【参考方案1】:
首先检查您的JSON
是否出现
NSString *tmp=[[NSString alloc]initWithData:byteData encoding:NSUTF8StringEncoding];
NSLog(@"before %@", tmp);
after that start your
NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:byteData options: NSJSONReadingMutableContainers error:&error]; // try this NSJSONReadingMutableContainers into NSJSONReadingAllowFragments
NSLog(@"jsonDict %@",jsonDict);
NSJSONReadingOptions
的某种类型是
typedef NS_OPTIONS(NSUInteger, NSJSONReadingOptions)
NSJSONReadingMutableContainers = (1UL << 0),
NSJSONReadingMutableLeaves = (1UL << 1),
NSJSONReadingAllowFragments = (1UL << 2)
KNilOptions // I added here
;
【讨论】:
首先检查这里是否有o/p NSLog(@"before %@", tmp); 祝朋友今天愉快【参考方案2】:首先在转换为 json 之前。检查 NSString O/p
NSString *strResponce=[[NSString alloc]initWithData: byteData encoding:NSUTF8StringEncoding];
NSLog(@"%@",strResponce);
【讨论】:
这不是问题的答案。以上是关于在 iPhone 中显示 nil 的 JSON 响应的主要内容,如果未能解决你的问题,请参考以下文章
iphone:在uitableviewcell中显示JSON数据
PKPaymentAuthorizationViewController 显示为 nil 视图控制器
nib 中的 UIView 在 iPad 上是 nil,在 iPhone 上不是 nil