Я выполняю рефакторинг и добавляю в API-интерфейс приложения. Я хотел бы получить это использование для моих «объектов данных JSON». Создайте экземпляр либо непосредственно из свойств, либо из строки json.
userFromParams = User("user@example.com", "otherproperty")
userFromString = User.fromJson(someJsonString)!!
// userIWantFromString = User(someJsonString)
Получение userFromParams для сериализации в JSON не было проблемой. Просто добавление функции toJson () позаботится об этом.
data class User(email: String, other_property: String) {
fun toJson(): String {
return Moshi.Builder().build()
.adapter(User::class.java)
.toJson(this)
}
companion object {
fun fromJson(json: String): User? {
val moshi = Moshi.Builder().add(KotlinJsonAdapterFactory()).build()
return moshi.adapter(User::class.java).fromJson(json)
}
}
}
Это "от Джона", от которого я хотел бы избавиться ... потому что ... я хочу и не могу понять, как. Вышеприведенный класс работает (дай или возьми, чтобы разрешить возвращение необязательного объекта или нет и т. Д.), Но он просто мешает мне застрять, пытаясь добраться до этой красивой чистой перегруженной инициализации.
Это не обязательно должен быть класс данных, но здесь это кажется уместным.