Question

Je fais assez lourde utilisation de l'analyse syntaxique JSON dans une application que je vous écris. La plupart de ce que je l'ai fait déjà mis en œuvre en utilisant construit Android dans la bibliothèque JSONObject (est-ce JSON-lib?).

JSONObject semble créer des instances de absolument tout dans la chaîne JSON ... même si je ne termine pas à l'aide de tous.

Mon application fonctionne actuellement assez bien, même sur un G1.

Ma question est la suivante: sont les avantages de la vitesse et de la mémoire à l'aide d'un analyseur de flux comme Jackson valait la peine

?

En difficulté, je veux dire ceci: Pour autant que je peux dire, il y a trois inconvénients à l'utilisation de Jackson à la place de la bibliothèque intégrée:

  1. La dépendance à une bibliothèque externe. Cela rend votre .apk plus à la fin. Pas une affaire énorme.
  2. Votre application est plus fragile. Étant donné que l'analyse ne se fait pas automatiquement, il est plus vulnérable aux changements dans le texte JSON qu'il est peut-être (parsing je me trompe à ce sujet).
  3. L'écriture de code pour analyser JSON via un analyseur de flux est laid et fastidieux.
Était-ce utile?

La solution

Je suppose que tu as à peu près répondu à votre propre question. :)
En utilisant l'analyseur JSON intégré en moi-même et n'a jamais cherché une alternative.

EDIT:. Maintenant, je suis à l'aide d'une enveloppe à base d'annotation mince de DroidParts

Autres conseils

Je suis également en utilisant l'analyseur de construction dans la plupart des cas JSON dans, mais récemment entré dans un scénario où elle ne correspond pas: Pour certaines demandes de service Web que je reçois des documents JSON de plus de 1 MB. Chargement ceux-ci avec l'accumulation dans l'analyseur JSON nécessite d'énormes quantités de mémoire principale et a donné lieu à OutOfMemoryException à plusieurs reprises. Pour ces scénarios un analyseur en continu est le meilleur choix (même si il est plus pratique en cours d'utilisation) et l'analyseur JSON intégré ne fournit pas le streaming, mais seulement le style comme DOM.

Pour ceux qui cherchent un analyseur de JSON streaming pour Android Je recommande fortement d'utiliser Google de GSON. J'ai essayé Jackson JSON au début et il a bien fonctionné jusqu'à ce que j'essayé de construire la version de mon application: ProGuard a signalé plusieurs problèmes et l'application en cours d'exécution tombé avec NullPointerException mystérieux dans le constructeur de ObjectMapper de Jackson (bien que tout fonctionnait bien dans la mise au point version). Même après quelques heures d'essayer autour, je n'ai pas pu résoudre ce problème. Je me suis alors passé à GSON alors et tout a fonctionné comme un charme.

BTW:. Streaming uniquement GSON pot a une taille de seulement 14KB - donc rien à craindre vraiment

Je pense que la question est de savoir si intégrée est un assez bon. S'il est, bien sûr, ce qui minimise les dépendances est souvent une bonne stratégie. Assez bon peut se référer à la fois l'efficacité et la facilité d'utilisation.

Pour ce que ça vaut la peine, Jackson a également un modèle d'arbre décent, ainsi que des données complètes de liaison. modèle d'arbre est nettement plus rapide que l'analyseur par défaut (analyse syntaxique est 3x 5x plus rapide sur J2SE, probablement semblable sur d'autres plates-formes comme Android, le modèle d'arbre lui-même est probablement plus efficace aussi bien). Ou: si vous ne voulez pas la dépendance au deuxième pot (cartographe est nécessaire pour le modèle de l'arbre et la liaison de données), l'écriture de votre propre arbre pour couvrir vos cas d'utilisation est simple aussi. Soit utiliser HashMap de base / ArrayList / enveloppes ou avoir vos propres classes si vous préférez. Builder serait peut-être 40 lignes de top code.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top