简体   繁体   中英

Streaming JSON with AFNetworking on IOS

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.

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 (eg setReceivedJSONBlock:((^)(void (id JSON))block ). This block will probably be triggered by delegate methods sent from the parser (eg <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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM