Photo of Oldest Known Map

Foto del mapa más antiguo conocido

Foto cortesía de cea + con permiso bajo licencia CC BY 2.0

En este post me gustaría seguir explorando elementos fundamentales de Couchbase Móvil en Android. Gran parte de la información se aplicará también a iOS. En breve publicaremos más información sobre iOS y las herramientas multiplataforma.

Puede leer una descripción general de nivel medio de por qué soy un converso a NoSQL y el uso de Couchbase Lite en lugar de SQLite y otras opciones de almacenamiento para móviles. aquí.

Este puesto te pondrá en marcha en Android en un par de minutos. Y éste explora las operaciones básicas con bases de datos. Verás que en ese post utilizo Mapas ampliamente.

Trabajar directamente con JSON

Puedes hacer muchas cosas con los mapas. A menudo también extraerás datos en otras estructuras como listas. Eso puede ser todo lo que necesites. Aquí tienes un ejemplo del tipo de typecast necesario.

En la aplicación de ejemplo, almacené un conjunto de comentarios como un array de cadenas. Usted todavía tiene que tirar de la matriz sobre la base de una clave, pero a partir de ahí se puede manejar como una lista.

Un toque más de sofisticación

Para aplicaciones más sofisticadas, es posible que desee convertir sus documentos completamente en objetos.

Existen varias librerías para convertir JSON a/desde objetos Java. Las API estándar de Android para el manejo de JSON tienen algunas limitaciones reales, pero está integrado, así que eso es una ventaja. Google tiene una biblioteca, Gson. Gson puede manejar casos en los que no se tiene acceso a la fuente. Me pareció interesante leer la Documento de diseño Gson para profundizar en otras consideraciones al manejar JSON.

En este post voy a hablar de otra popular librería JSON, Jackson. Jackson es bastante maduro, soporta tres enfoques diferentes para el manejo de JSON, y tiene una sólida reputación de eficiencia.

Vinculación de bases de datos

Lee los detalles sobre las tres modalidades para Jackson aquí si quieres. La mayoría de los desarrolladores de aplicaciones probablemente querrán utilizar la función databinding enfoque. Esto suena quizás un poco intimidante, pero en realidad no lo es. Databinding aquí sólo se refiere a hacer coincidir el JSON con las propiedades de un objeto de alguna manera automatizada.

Por ejemplo, databinding significa tomar esto

y utilizarlo para crear una instancia de este

Jackson es bastante bueno en averiguar cómo hacer esto sin ayuda. Dado que todos los campos anteriores se declaran públicos, no hay nada más que hacer. Asumiendo que los datos JSON están en un archivo Mapa llamado "map", este fragmento rellenará el a Póngase en contacto con instancia.

Si el JSON anterior representa los datos en un documento Couchbase, el código sería algo como esto.

Esto funciona si los campos no son públicos si hay getters y setters correspondientes.

Un poco de ayuda: Anotaciones

Por último, puede obtener un control realmente preciso de la construcción de sus objetos utilizando Anotaciones. Las anotaciones de Jackson son muy potentes. Una descripción completa está más allá del alcance de este blog. Puedes leer una buena guía que las describe aquí.

POJO (Plain Old Java Objects)1

Para ayudar en el uso de Anotaciones, me pareció útil comenzar con una clase base. Aquí está el código.

La primera anotación @JsonInclude(Include.NON_NULL) indica a Jackson que ignore los campos nulos (es decir, lo que falta en los datos).

Las siguientes tres anotaciones, junto con el código, permiten a Jackson manejar cualquier campo no especificado. Jackson rellenará felizmente cualquier cosa que no le hayas dicho en el mapa additionalProperties. Esto significa que puedes cambiar tus datos sin preocuparte de que tu código explote. No hace falta decir que esto podría permitir que errores reales pasen desapercibidos, ¡así que úsalo con precaución!

Por último, en caso de que quieras evitar hacerlo tú mismo, aquí tienes un enlace a una herramienta que puede ayudarte a automatizar la anotación de clases: http://www.jsonschema2pojo.org/

Nota final

Couchbase Lite utiliza actualmente Jackson internamente. Mucha gente recomendaría no confiando en esto. Lo señalo por si te encuentras con conflictos de librerías u otros problemas.

Posdata

Consulte más recursos en nuestra portal para desarrolladores y síganos en Twitter @CouchbaseDev. Puede enviar preguntas a nuestro foros. Y participamos activamente en Stack Overflow.

Puede seguirme personalmente en @HodGreeley

Autor

Publicado por Hod Greeley, Defensor del Desarrollador, Couchbase

Hod Greeley es desarrollador de Couchbase y vive en Silicon Valley. Tiene más de dos décadas de experiencia como ingeniero de software y director de ingeniería. Ha trabajado en una variedad de campos de software, incluyendo física computacional y química, seguridad informática y de redes, finanzas y móviles. Antes de unirse a Couchbase en 2016, Hod dirigió las relaciones con desarrolladores para móviles en Samsung. Hod es doctor en física química por la Universidad de Columbia.

Dejar una respuesta