6

使用 AFNetworking 从流式 JSON API 接收数据的最优雅方式是什么?AFNetworking 为从 JSON API 接收非流式数据提供了出色的支持,但我找不到任何流式 JSON 的示例。

4

1 回答 1

12

AFNetworking 没有内置的流式 SAX 样式 JSON 操作,但应该可以直接创建您自己的操作。

  • 创建一个子类AFJSONRequestOperation
  • 在初始化期间使用操作的outputStream属性将其连接到支持 SAX 样式解析的 JSON 解析器(例如Yajl)。解析器将读取数据并在 JSON 对象传入时构建它
  • 连接responseJSON属性以从解析器中读取缓存的对象
  • ...或者根据您进行流式传输的方式,您可能需要添加一个新属性,该属性定义一个块以在新的 JSON 对象返回时执行(例如setReceivedJSONBlock:((^)(void (id JSON))block)。这个块可能会被解析器发送的委托方法触发(例如<YAJLParserDelegate> -parserDidEndDictionary:)。

如果您能够完成这项工作,我会鼓励您发布并与他人分享。我认为这可能对很多人有用。

于 2012-02-20T20:38:27.937 回答