Какие знаешь инструменты для сериализации и десериализации

«Какие знаешь инструменты для сериализации и десериализации» — вопрос из категории Kotlin, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для сериализации/десериализации в Android чаще всего используют:

  1. Gson (Google) - простой, но медленный:
val gson = Gson()
val json = gson.toJson(myObject) // сериализация
val obj = gson.fromJson(json, MyClass::class.java) // десериализация
  1. Moshi (Square) - современная альтернатива Gson с поддержкой Kotlin:
val moshi = Moshi.Builder().build()
val adapter = moshi.adapter(MyClass::class.java)
val json = adapter.toJson(myObject)
val obj = adapter.fromJson(json)
  1. Kotlinx.serialization - нативный для Kotlin, требует аннотаций:
@Serializable
data class User(val name: String)

val json = Json.encodeToString(User("Alex"))
val obj = Json.decodeFromString<User>(json)
  1. Parcelable - для межпроцессного взаимодействия (Android-specific)

Для JSON предпочтительнее Moshi или kotlinx.serialization из-за производительности и null-safety. Для сложных случаев можно использовать Protocol Buffers или FlatBuffers.