Освой Android играючи
/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000
Библиотека Moshi является современной альтернативой популярной, но устаревшей библиотеке GSON. Также служить для конвертации объектов JSON в Java-объекты и наоборот.
Преимущества перед GSON:
Репозиторий: Гитхаб
Установим зависимость в Gradle.
apply plugin: 'kotlin-kapt'
dependencies {
// ... другие зависимости
implementation("com.squareup.moshi:moshi:1.11.0")
kapt("com.squareup.moshi:moshi-kotlin-codegen:1.11.0")
}
Все примеры смотрите в документации. Мы рассмотрим только один частный случай.
Допустим с сервера пришёл ответ в виде JSON-строки и мы должны из неё построить объект для работы в своём приложении.
У нас должен быть подготовлен нужный класс. Обратите внимание на аннотации.
package ru.alexanderklimov.moshi
import com.squareup.moshi.Json
import com.squareup.moshi.JsonClass
@JsonClass(generateAdapter = true)
data class Cat(
@Json(name = "name")
val name: String,
@Json(name = "age")
val age: Int,
@Json(name = "color")
val color: Int
)
Обрабатываем пришедшую строку и создаём объект.
val jsonText = "{\"name\":\"Мурзик\",\"color\":-16777216,\"age\":9}"
val moshi = Moshi.Builder().build()
val jsonAdapter: JsonAdapter<Cat> = moshi.adapter(
Cat::class.java
)
val murzik = jsonAdapter.fromJson(jsonText)
println(murzik)
println("Имя кота: ${murzik?.name}")
// I/System.out: Cat(name=Мурзик, age=9, color=-16777216)
// I/System.out: Имя кота: Мурзик