Сериализация / десериализация для запечатанных черт с 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
поле, чтобы иметь возможность десериализации, так как он должен знать, какой подкласс для создания экземпляра.
Так что наличие этого дополнительного ключа совершенно нормально и необходимо. Его невозможно удалить, так как это предотвратит работу десериализации.