使用 AFNetworking 从 JSON 响应中解析 HTML 标签

Posted

技术标签:

【中文标题】使用 AFNetworking 从 JSON 响应中解析 HTML 标签【英文标题】:Parsing HTML Tags from JSON response using AFNetworking 【发布时间】:2013-07-30 18:16:09 【问题描述】:

我正在使用 AFNetworking 获取 JSON 响应并基于它填充我的 UITableView。但是,我在一些 JSON 响应中得到了诸如 <a href='link'> 之类的 html 标签。如何在填充我的表格视图单元格时删除它们并获得正确的格式?

下面是使用 AFNetworking 从 JSON 响应重新加载 tableview 中数据的代码 -

NSURL *url = [NSURL URLWithString:@"http://xxxxx.com/api.php?req=all"];

NSURLRequest *request = [NSURLRequest requestWithURL:url];

AFJSONRequestOperation *operation = [AFJSONRequestOperation      JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse   *response, id responseObject) 


    self.jobsArrayFromAFNetworking = [[responseObject objectForKey:@"all"]mutableCopy];

    [spinner stopAnimating];

    [self.tableView reloadData];

    NSLog(@"JSON RESULT %@",responseObject);

  failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id    responseObject)

    NSLog(@"Request failed with error: %@, %@",error,error.userInfo);
   ];

  [operation start];

 

【问题讨论】:

我不清楚:您是否想从数据中去除 HTML 标签,以便它们不会直接呈现到您的表格视图单元格中? 我希望 html 标签以正确的方式出现。间接地,我想从 JSON 响应中解析那些 html 标签。 所以您想渲染 HTML 标签,以便格式显示在您的表格视图单元格中? 是的。甚至不在 tableView 单元格中,而是在我希望它们显示的任何地方。 要显示 HTML 格式,您需要更新单元格以包含 UIWebViews 或使用一些第三方 HTML 呈现文本视图。真的,它与 AFNetworking 或 JSON 无关。您已经获得了正确的响应数据和字符串,您只需要选择适当的视图组件来稍后呈现它们。 【参考方案1】:

您当然可以使用自己的解码器,但 MWFeedParser 中有一个很棒的实现来去除 html 标签并使用链接做一些非常有用的事情:

https://github.com/mwaterfall/MWFeedParser/blob/master/Classes/NSString%2BHTML.m

使用此类别,您只需在字符串上调用stringByConvertingHTMLToPlainText,然后在表格中使用它们。

【讨论】:

我看到了这个。但是我应该如何使用 AFNetworking 来实现它呢?这会改变我编写的整个代码。 我刚刚阅读了您的 cmets,阐明了您想要做什么。首先,我认为在 AFNetworking 级别实现 NSString 解析的选择可能是一个糟糕的设计。话虽如此,您可以轻松地继承您的 AFHTTPClient 或 json 响应操作来实现这一点。然后当你想在标签中显示链接时,使用类似:github.com/mattt/TTTAttributedLabel

以上是关于使用 AFNetworking 从 JSON 响应中解析 HTML 标签的主要内容,如果未能解决你的问题,请参考以下文章

AFNetworking 3.0 未从响应中获取 json

iOS 从带有 JSON 参数的 AFNetworking HTTP POST 方法获取 JSON 响应

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

AFNetworking、NSURLSession 和 json 响应 (Ronak Sankhala)

iOS,AFNetworking - 带有 JSON 响应的“清除”NSSTring [关闭]

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