Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Converter Gson x Converter: Moshi (vantagens e desvantagens)

Bom dia a todos (e estreando o fórum desse curso)

No curso de Jetpack Compose: realizando a comunicação com REST API o professor está utilizando a biblioteca Converter: Moshi para fazer as conversões Json da requisição Http. Mas uns dias atrás, eu fiz o desafio de 7 dias do Android e utilizei outra biblioteca para fazer a conversão, que é a Converter: Gson. Neste projeto esse conversor me ajudou bastante para pegar as informações do Github, e só precisei utilizar a anotação @SerializedName para fazer as conversões, fazendo desse jeito:

data class UsuarioMapper(
// só precisava identificar qual variável estava pegando da requisição
    @SerializedName("avatar_url")
    val url:String? = null,
    @SerializedName("name")
    val nome: String? = null,
    @SerializedName("login")
    val usuario: String? = null,
    @SerializedName("bio")
    val descricao: String? = null
)
Na classe service:
@GET("{id}")
// o converter já fazia a conversão automática
    suspend fun pegaUsuario(@Path("id")id:String): UsuarioMapper?

A minha dúvida é, em qual contexto é mais interessante utilizar o Converter: Moshi e em qual o Converter: Gson? E quais outros tipos de converters também são interessantes

1 resposta
solução!

Olá, Murilo! Que ótima pergunta, é sempre bom entender as diferenças entre as ferramentas que estamos utilizando.

Tanto o Converter: Gson quanto o Converter: Moshi são bibliotecas poderosas para converter JSON em objetos Kotlin (e vice-versa), e ambas podem ser usadas com Retrofit. A escolha entre uma ou outra geralmente depende das necessidades específicas do seu projeto e das preferências pessoais.

Vamos falar um pouco sobre as vantagens e desvantagens de cada uma:

Converter: Gson

  • Vantagens: Gson é uma biblioteca madura e amplamente usada, com muitos recursos e boa documentação. Ela é muito flexível e tem uma boa tolerância a JSONs mal formatados.
  • Desvantagens: A Gson não é tão eficiente em termos de desempenho quanto a Moshi. Além disso, ela não lida bem com tipos genéricos devido a sua implementação baseada em reflexão.

Converter: Moshi

  • Vantagens: Moshi é mais recente e foi desenvolvida pelos mesmos criadores do OkHttp. Ela é mais eficiente em termos de desempenho e memória do que a Gson, e lida melhor com tipos genéricos. Além disso, a Moshi tem uma integração mais direta com o Kotlin, incluindo suporte para classes de dados do Kotlin.
  • Desvantagens: Moshi é menos tolerante a JSONs mal formatados e tem menos recursos do que a Gson. Além disso, por ser mais nova, pode não ter tantos exemplos de uso disponíveis na internet.

Em relação a qual usar, isso vai depender do seu caso de uso. Se você precisa de alta performance e está trabalhando principalmente com Kotlin, Moshi pode ser uma boa escolha. Se você precisa de mais flexibilidade e tolerância a erros, ou está trabalhando com um código legado que já usa Gson, então Gson pode ser a melhor opção.

Existem outros conversores disponíveis para Retrofit, como o Jackson e o Converter: Scalars. O Jackson é uma biblioteca poderosa e flexível, mas é mais pesada e complexa do que Gson ou Moshi. O Converter: Scalars é um conversor simples que pode converter respostas em strings, números e outros tipos escalares.

Qualquer dúvida, estarei a disposição :)