Случай класса можно сериализовать в качестве «нормального» класса, как это де-факто обычный класс. Поскольку все аргументы конструктора доступны по умолчанию, он даже лучше подходит для сериализации, чем обычный класс.
случай класс просто говорит компилятор автоматически добавить некоторые методы, как равно и хэш-код к классу. В то же время добавляется объект-компаньон с применением метода , но это не влияет на обычный класс вообще.
Поэтому, если возникают проблемы с сериализацией, вероятность того, что источник проблемы лежит в другом месте, является довольно высокой.
Вы можете попробовать json4shttps://github.com/json4s/json4s, чтобы преобразовать ваш класс case в JSON, а затем преобразовать его в формат MessagePack.
import org.json4s._
import org.json4s.native.Serialization
import org.json4s.native.Serialization.{read, write}
implicit val formats = Serialization.formats(ShortTypeHints(List(classOf[Person])
val jsonString : String = write(Person("Andi", 42))
// convert with MessagePack as you would do with normal JSON
Я не понимаю. Класс класса - это класс с некоторыми дополнительными методами, которые, как я думаю, не конфликтуют с MessagePack. –
Этого очень много, если вы хотите точно такую же функциональность: внедрение и поддержка 'Person.apply',' copy', 'equals',' hashCode', 'toString' и вывод из' Product'. – rightfold