从 AFNetworking 获取 JSON 文件或信息

Posted

技术标签:

【中文标题】从 AFNetworking 获取 JSON 文件或信息【英文标题】:get JSON file or info from AFNetworking 【发布时间】:2013-07-12 14:07:31 【问题描述】:

我有一段很好的工作代码,可以从服务器下载和解析 JSON,并在AFJSONRequestOperation+JSONRequestOperationWithRequest:success:failure: 中返回结果。方法的成功(以及失败)部分将块作为参数,其中包含id JSON 参数。如果我理解正确 - 此对象用于表示 JSON 文件或其内容。我需要有可能使用 MFMailComposeViewController 将此 JSON 文件(或它的其他文本格式的文本表示)发送到电子邮件。所以,两个问题:

如何从这个文件中获取这个 JSON 内容? 我是否需要注册 .json 文件类型才能使用 MFMailComposeViewController 发送它?

【问题讨论】:

【参考方案1】:

如何从这个文件中获取这个 JSON 内容?

您可以从

获取 JSON 数据响应(在它被 NSJSONSerialization 转换为 Foundation 对象之前) operation.responseString(作为 NSString),或 operation.responseData(作为 NSData)。

如果您要将其附加到电子邮件中,则需要后者。

我是否需要注册 .json 文件类型才能使用 MFMailComposeViewController?

您需要致电[MFMailComposeViewController -addAttachmentData:mimeType:fileName:]。您可以从operation.response.allHeaderFields NSDictionary 获取 mime 类型。也可以使用官方标准,application/json,或者text/json,也是常用的。

【讨论】:

这么简单...谢谢你,亚伦!我没有足够的检查来检测这个属性【参考方案2】:

如果不是 JSON 而是 JSON 的对象表示,则成功中的响应。很可能是NSArrayNSDictionary

您需要做的是使用普通的 HTTP 请求并将该字符串发送到 MFMailComposeViewController 或将 JSON 对象改回 JSON 字符串:

NSError *error = nil;

NSData *jsonData = [NSJSONSerialization dataWithJSONObject:JSON options:0 error:&error];
NSString *jsonString = nil;
if (jsonData) 
    jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
 else 
    NSLog(@"Error creating JSON: %@", error);

然后您可以在您的MFMailComposeViewController 中传递jsonString

【讨论】:

以上是关于从 AFNetworking 获取 JSON 文件或信息的主要内容,如果未能解决你的问题,请参考以下文章

从 AFNetworking 获取非 json 内容

AFNetworking:从 Http 响应中获取 JSON 值

通过 AFNetworking 从服务器获取 Json 响应

从 AFNetworking 2.0 加载带有 JSON 的 UITableView

AFNetworking 2.0 从故障块中的代码 400 获取 JSON

如何从 AFnetworking 2.0 操作/NSURLSessioNDataTask 获取原始 JSON 响应?