Streaming JSON with AFNetworking on IOS
-
28-10-2019 - |
Frage
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.
Lösung
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.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow