Streaming JSON avec AFNetworking sur IOS
-
28-10-2019 - |
Question
Quelle serait la manière la plus élégante de recevoir des données d'une API JSON en streaming à l'aide d'AFNetworking?AFNetworking fournit un excellent support pour recevoir des données non diffusées depuis les API JSON, mais je n'ai trouvé aucun exemple de streaming JSON.
La solution
AFNetworking n'a pas d'opération JSON de streaming intégrée de style SAX, mais il devrait être simple de créer la vôtre.
- Créer une sous-classe de
AFJSONRequestOperation
- Utilisez la propriété
outputStream
de l'opération lors de l'initialisation pour la connecter à un analyseur JSON prenant en charge l'analyse de type SAX (comme Yajl ). L'analyseur lira les données et construira l'objet JSON au fur et à mesure de son entrée - Raccordez la propriété
responseJSON
pour lire l'objet mis en cache à partir de l'analyseur - ... ou selon la façon dont vous effectuez le streaming, vous devrez peut-être ajouter une nouvelle propriété qui définit un bloc à exécuter lorsque de nouveaux objets JSON reviennent (par exemple,
setReceivedJSONBlock:((^)(void (id JSON))block
). Ce bloc sera probablement déclenché par des méthodes déléguées envoyées par l'analyseur (par exemple,<YAJLParserDelegate> -parserDidEndDictionary:
).
Si vous parvenez à faire fonctionner cela, je vous encourage à le publier et à le partager avec d'autres. Je pense que cela pourrait être utile à un certain nombre de personnes.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow