Estoy haciendo un uso intensivo del análisis JSON en una aplicación que estoy escribiendo. La mayoría de lo que hice ya está implementado usando la biblioteca JSONObject integrada de Android (¿es json-lib?).JSON: Analizador de flujo de Jackson - ¿Realmente lo vale?
JSONObject parece crear instancias de absolutamente todo en la cadena JSON ... incluso si no termino usando todas.
Mi aplicación actualmente funciona bastante bien, incluso en un G1.
Mi pregunta es esta: ¿vale la pena la velocidad y la memoria de utilizar un analizador de flujo como Jackson?
Por problemas, me refiero a esto: Por lo que yo puedo decir, hay tres desventajas para el uso de Jackson en lugar de la incorporada en la biblioteca:
- La dependencia de una biblioteca externa. Esto hace que tu .apk sea más grande al final. No es un gran problema.
- Tu aplicación es más frágil. Como el análisis no se realiza automáticamente, es más vulnerable a los cambios en el texto JSON que está analizando (quizás estoy equivocado al respecto).
- Escribir código para analizar JSON a través de un analizador de flujo es feo y tedioso.
No estoy de acuerdo con el n. ° 2. Si la estructura de JSON cambia de manera inesperada, sin embargo, no tienes suerte. –
No es cierto en ciertos casos ... por ejemplo, agregar un objeto como un valor en otro objeto. A menos que lo planee en el analizador de extracción, lo descartará, mientras que con JSONObject, simplemente funcionará. Por ejemplo: Cambiar { "nombre apellido": "Adán", "apellidos": "Olsen" } a { "nombre apellido": "Adán, " last_name: "Olsen", "numeros_telefono": { "casa": "555-867-5309", "trabajo": "888-555-5555" }} tiraría su analizador de lograr en un bucle como: while (analizador .nextToken()! = JsonToken.END_OBJECT) - Al final terminarás golpeando END_OBJECT, donde JSONObject lo analizaría bien. – synic
Es posible escribir un analizador de flujo que cubra eso. Creo que esto es lo que shipChildren (http://jackson.codehaus.org/1.5.0/javadoc/org/codehaus/jackson/JsonParser.html#skipChildren%28%29) es para. –