M-Miyazako
1/20/2020 - 6:21 AM

KotlinのJsonパーサはkotshiが良いらしい

KotlinのJsonパーサはkotshiが良いらしい

  • Gson -> not nullの変数にnullを入れてしまうことがある
  • moshi -> 安全だがリフレクションを使っているので遅い
  • kotshi -> リフレクションを使わないmoshiのアダプターを生成 = 早くて安全

参考:https://blog.kaelae.la/entry/2018/01/29/203000

apply plugin: 'kotlin-kapt'

dependencies {
  // moshi + kotshi
  implementation 'com.squareup.moshi:moshi:1.8.0'
  implementation 'se.ansman.kotshi:api:0.3.0'
  kapt 'se.ansman.kotshi:compiler:0.3.0'
}
fun parse_person() {
  val json = "{\"name\": \"kaelaela\", \"email\": \"test@gmail.com\", \"job_title\": \"title\", \"age\": 27}"
  val moshi = Moshi.Builder().add(ApplicationJsonAdapterFactory.INSTANCE).build()
  val person = moshi.adapter<Person>(Person::class.java).fromJson(json)
}

@JsonSerializable
data class Person(
    val name: String,
    val email: String?,
    @Json(name = "job_title") val jobTitle: String,
    val age: Int
)

@KotshiJsonAdapterFactory
abstract class ApplicationJsonAdapterFactory : JsonAdapter.Factory {
    companion object {
        val INSTANCE: ApplicationJsonAdapterFactory = KotshiApplicationJsonAdapterFactory()
    }
}