tag manager google example android json android-parser logan-square

manager - LoganSquare analiza la biblioteca de Android: comentarios, puntos de referencia, pros y contras



google analytics android (3)

Bien, para aclarar si está lanzando su aplicación a dispositivos con ART, tendrá una gran ventaja de velocidad a través del análisis.

así que voy a explicar mi experiencia con logansquare hasta ahora.

pros:

  • Fácil de usar : con Gson tiene que usar Type para analizar la matriz json a una lista de objetos, en loganSquare es tan fácil como LoganSquare.parseList()
  • Más rápido : en cualquier dispositivo (pruébalo tú mismo) es un poco más rápido.
  • Más rápido : en los dispositivos ART, su brecha de velocidad es realmente gigante, vea su punto de referencia
  • RetroFit amigable : sí, juega bien con la modificación.

contras :

  • NO REALM DB : No pude hacerlo funcionar con Realm db hasta ahora (no me he esforzado mucho)

  • Adaptador de tipo personalizado : no se ha encontrado un adaptador de tipo o algo similar hasta ahora, pero no estoy seguro.

ver su punto de referencia here

y aquí están mis malos resultados de referencia (no es una referencia adecuada pero es algo): Emulador nexus 5, con DalvikVM, 4.2 jellybean

Puntos de referencia

Modelo analizado

import com.bluelinelabs.logansquare.annotation.JsonField; import com.bluelinelabs.logansquare.annotation.JsonObject; import com.google.gson.annotations.SerializedName; /** * Created by Ercan on 6/26/2015. */ @JsonObject(serializeNullCollectionElements = true ,serializeNullObjects = true) public class Village { @SerializedName("IdVillage") @JsonField(name ="IdVillage") String tbsVillageId; @SerializedName("TBS_VillageId") @JsonField(name ="TBS_VillageId") String townRefId; @SerializedName("VillageName") @JsonField(name ="VillageName") String villageName; @SerializedName("Status") @JsonField(name ="Status") String status; @SerializedName("DateInserted") @JsonField(name ="DateInserted") String dateInserted; @SerializedName("DateLastModified") @JsonField(name ="DateLastModified") String datelastModified; public String getTbsVillageId() { return tbsVillageId; } public void setTbsVillageId(String tbsVillageId) { this.tbsVillageId = tbsVillageId; } public String getTownRefId() { return townRefId; } public void setTownRefId(String townRefId) { this.townRefId = townRefId; } public String getVillageName() { return villageName; } public void setVillageName(String villageName) { this.villageName = villageName; } public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } public String getDateInserted() { return dateInserted; } public void setDateInserted(String dateInserted) { this.dateInserted = dateInserted; } public String getDatelastModified() { return datelastModified; } public void setDatelastModified(String datelastModified) { this.datelastModified = datelastModified; } }

Estoy usando Jackson con la biblioteca DataBind para analizar json y mapearlo objeto java. También estoy usando Gson en otro proyecto donde el rendimiento es menos requerido.

El 17 de febrero, la biblioteca LoganSquare se lanzó por primera vez, prometiendo un tiempo de análisis 4-10 más rápido que Gson.

  • ¿Qué ventajas como LoganSquare que Gson / Jackson no tenían?
  • Pros y contras ?
  • ¿Tienes benchmarks en aplicación de producción?
  • ¿Es lo suficientemente estable para una aplicación de producción?

Entiendo que puede ser una pregunta de base de opinión primordial, así que sea lo más técnico y específico posible y base su respuesta en datos reales.


He ejecutado el proyecto LoganSquare Benchmark en mi dispositivo Nexus 5 con Android 6.0.1 y aquí está el resultado:

Además, después de pasar un breve tiempo con la biblioteca, aquí están mis ventajas y desventajas:

Pros

  1. Es realmente rápido tanto en el análisis como en la serialización.
  2. pequeño tamaño de la biblioteca
  3. Métodos prácticos para el análisis y serialización de listas.
  4. convertidores útiles
  5. Errores en tiempo de compilación en lugar de solo en tiempo de ejecución

Contras

  1. no hay mucha documentación, tampoco muchas preguntas y respuestas en :)
  2. no hay muchos tipos soportados
  3. solo se admiten claves de cadena en las colecciones de mapas

Escribí un proyecto de ejemplo para ver cómo funciona LoganSquare y también una publicación de blog , así que eche un vistazo para obtener más información.


response.body() es string json response

// MovieData es una clase modelo

MovieData movieData=LoganSquare.parse(response.body(),MovieData.class); Log.d("onResponse: ",movieData.getTitle());