如何使我收到可以解析的 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”?的主要内容,如果未能解决你的问题,请参考以下文章

解析 NSArray 的 NSDictionary

解析 JSON 后无法在 NSDictionary 中创建密钥

将 json 解析为 NSDictionary [关闭]

如何将 NSDictionary 解析为数组数组?

如何将这样的 JSON 解析为 NSDictionary 并获取键和值

理解 JSON 解析为 NSDictionary [重复]