Розбираємося, навіщо потрібен власний серіалізатор у
kotlinx.serialization: як відокремити внутрішнє подання (наприклад,
Money як
Long у центах) від зовнішнього JSON-контракту (рядок
"12.34"), як під’єднати серіалізатор через
@Serializable(
with = ...), із чого складається
KSerializer<T> (
descriptor,
serialize,
deserialize), чому гроші краще не розбирати через
Double і як писати fail-fast розбір із
SerializationException.