Streaming JSON with AFNetworking on IOS

℡╲_俬逩灬. 提交于 2019-12-30 04:50:28

问题


What would be the most elegant way to receive data from a streaming JSON API using AFNetworking? AFNetworking provides excellent support for receiving non-streaming data from JSON APIs, but I couldn't find any examples of streaming JSON.


回答1:


AFNetworking does not have a built-in streaming SAX-style JSON operation, but it should be straight forward to create your own.

  • Create a subclass of AFJSONRequestOperation
  • Use the outputStream property of the operation during initialization to hook it up to a JSON parser that supports SAX-style parsing (such as Yajl). The parser will read data and build up the JSON object as it comes in
  • Hook up the responseJSON property to read the cached object from the parser
  • ...or depending on how you're doing streaming, you may need to add a new property that defines a block to execute when new JSON objects come back (e.g. setReceivedJSONBlock:((^)(void (id JSON))block). This block will probably be triggered by delegate methods sent from the parser (e.g. <YAJLParserDelegate> -parserDidEndDictionary:).

If you are able to get this working, I would encourage you to publish and share this with others. I think this could be useful to quite a few people.



来源:https://stackoverflow.com/questions/9366959/streaming-json-with-afnetworking-on-ios

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!