从AFNetworking获取JSON文件或信息

时间:2013-07-12 14:07:31

标签: ios objective-c json afnetworking mfmailcomposeviewcontroller

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

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

2 个答案:

答案 0 :(得分:1)

成功的响应,如果不是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);
}

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

答案 1 :(得分:1)

  

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

您可以从

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

如果你要将它附加到电子邮件中,你会想要后者。

  

我是否需要注册.json文件类型才有可能使用它发送它   MFMailComposeViewController?

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