在 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 解析 json 时获取空值?

iphone:在uitableviewcell中显示JSON数据

PKPaymentAuthorizationViewController 显示为 nil 视图控制器

nib 中的 UIView 在 iPad 上是 nil,在 iPhone 上不是 nil

如何在 iphone 中显示 json 的可变数组数据,如可扩展/可折叠 TableView?

蓝牙耳机怎么两个同时响?