如何使我收到可以解析的 NSDictionary 的 AFNetworking “responseObject”?
Posted
技术标签:
【中文标题】如何使我收到可以解析的 NSDictionary 的 AFNetworking “responseObject”?【英文标题】:How do I make my AFNetworking "responseObject" that I receive a NSDictionary I can parse? 【发布时间】:2014-01-23 18:02:57 【问题描述】:我使用 AFNetworking 1.0 进行了这个调用,它返回了一个 responseObject
,其中包含我想要的 API 中的数据:
[[AFDiffbotClient sharedClient] postPath:@"http://diffbot.com/api/batch" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject)
但是,我不知道如何处理responseObject
。
如果我检查[responseObject class]
,我会得到NSData
。
如果我NSLog(@"%@", responseObject)
我得到一堆数字(我假设的内存地址):
如果我这样做:
NSString *responseString = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
NSLog(@"%@", responseString);
我得到了我想要的输出! 但是,这是NSString
。
如果我这样做:
NSError *error;
NSDictionary *responseDictionary = [NSJSONSerialization JSONObjectWithData:responseObject options:kNilOptions error:&error];
NSLog(@"%@", responseDictionary);
我收到了NSDictionary
,但它缺少绝大多数响应(即:我没有收到 NSString
方法中包含的内容)。
我应该如何处理这个对象?
【问题讨论】:
您是否尝试使用 JSON 编码从 php 获取数据?这很容易使用。 你到底是什么意思? 显示示例字符串内容和相应的字典内容以及返回的任何错误。 你应该从你的服务器接收什么? JSON数据?你确定你的json有效吗?在您可以在线找到的 json 验证器中复制/粘贴您的 nsstring。如果它有效并且您遗漏了一些东西,那么它会变得更加复杂,否则请修复 json 您是否尝试过不同的选项而不是 kNilOptions? 【参考方案1】:我就是这样做的..
- (void) requestDataFinish:(NSData *)data withError:(NSError *)networkError
NSDictionary *responseData;
NSError *error = nil;
if (data != nil)
responseData = [NSJSONSerialization JSONObjectWithData:data
options:NSJSONReadingMutableContainers
error:&error];
...
【讨论】:
我想亲你的嘴。 (修复它的是 NSJSONReadingMutableContainers。)以上是关于如何使我收到可以解析的 NSDictionary 的 AFNetworking “responseObject”?的主要内容,如果未能解决你的问题,请参考以下文章
解析 JSON 后无法在 NSDictionary 中创建密钥