Migrar de Gson a Moshi en 2 minutos

gson moshi

Episodio 21 – Migrar de Gson a Moshi en 2 minutos

Primero de nada comentarte que Gson está en desuso y Moshi en pleno auge. Esto por sí solo no es un motivo para hacer la migración. Por lo tanto, depende del proyecto en particular que quieras realizarla.

Lo que sí que puede ser un aliciente mayor para que te decidas, es que la biblioteca de Google usa Reflection. Esto tiene penalización en tiempo de carga en ejecución para el usuario. La de Square, no tiene esta pega.

Moshi tiene mejor performance, es más rápido y usa menos memoria.

Migrar de Gson a Moshi en 2 minutos

Para llevar a cabo esta migración, tienes que llevar a cabo estos…

5 pasos

Paso 1

Añade las dependencias en el build.gradle de tu módulo de aplicación. Normalmente :app.

implementation("com.squareup.moshi:moshi:1.12.0")
kapt("com.squareup.moshi:moshi-kotlin-codegen:1.12.0")
implementation("com.squareup.retrofit2:converter-moshi:2.9.0")

Paso 2

Si tienes anotaciones @SerializedName, sustitúyelas por @Json.

data class Foo(
    @SerializedName("foo_x")
    val fooX: String
)
data class Foo(
    @Json(name = "foo_x")
    val fooX: String
)

Paso 3

Añade la anotación @JsonClass(generateAdapter = true) a todos las data classes que vayas a usar para parsear info proveniente de JSONs. Tanto para hacer requests, como recibir responses.

@JsonClass(generateAdapter = true)
data class Foo(
    @Json(name = "foo_x")
    val fooX: String
)

Paso 4

Cambia las instancias de Gson a Moshi.

GsonBuilder().create()
Moshi.Builder().build()

Paso 5

Para finalizar, cambia el converter que uses en Retrofit de Gson a Moshi.

addConverterFactory(GsonConverterFactory.create())
addConverterFactory(MoshiConverterFactory.create())

¡Y ya lo tienes! 😎

Como disclaimer, comentarte que si quieres hacer cosas un poquitín más elaboradas, tendrás que crearte tus propios adapters. El scope de esta entrada es transmitirte las partes básicas de esta migración.

Quizá te interese que te revisen el código de tu proyecto Android. O a lo mejor quieres tener feedback de una comunidad de gente comprometida.

Publicado: 2020-11-09 Actualizado: 2023-03-15