Сериализация / десериализация для запечатанных черт с Upickle

Я пытаюсь вызвать веб-сервис с моего игрового сервера. Я использую upickle для сериализации / десериализации. Моя проблема у меня есть запечатанная черта как

sealed trait RequestContent {
}
case class CreateUserRequest (email: String, password: String,jsonBlob: Map[String, String], createBTCWallet: Boolean) extends RequestContent

И когда я пытаюсь использовать upickle.default.write как

val userRequest = CreateUserRequest("email","pw",Map("name" -> "name", true))
write(userRequest) 

это дает дополнительный ключ для $type, Есть ли способ получить данные для публикации без ввода в upickle??

1 ответ

Решение

В случае иерархии запечатанных признаков, uPickle нуждается в дополнительном $type поле, чтобы иметь возможность десериализации, так как он должен знать, какой подкласс для создания экземпляра.

Так что наличие этого дополнительного ключа совершенно нормально и необходимо. Его невозможно удалить, так как это предотвратит работу десериализации.

Другие вопросы по тегам