从 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 文件(或它的其他文本格式的文本表示)发送到电子邮件。所以,两个问题:
【问题讨论】:
【参考方案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 的对象表示,则成功中的响应。很可能是NSArray
或NSDictionary
。
您需要做的是使用普通的 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:从 Http 响应中获取 JSON 值
通过 AFNetworking 从服务器获取 Json 响应
从 AFNetworking 2.0 加载带有 JSON 的 UITableView