До Play 2.1 и Scala 2.10 я использовал Jerkson.
К сожалению, официально выпущенной версии Jerkson, совместимой со Scala 2.10 (пока), не существует.
С тех пор я использую Джексона с модулем Scala, но у меня нет желаемого поведения с Enumerations.
Я пытаюсь использовать Play 2.1 Reads, Write и Format, используя начало макроса, но это кажется очень болезненным, и мне нужно добавить шаблонный материал в мои модели, чтобы начало работало:
object User extends ((String, String, Option[String], Option[String], Long, Long, Boolean, Boolean, ObjectId) => User) {
...
}
Тогда я могу использовать implicit val userFormat: Format[User] = Json.format[User]
И я все еще не могу динамически сериализовать Object
, а только User
Я не смотрел на Lift, но, похоже, он добавляет столько же шаблонного кода, сколько библиотека Play2.1 Json.
Я думаю, что сериализация должна быть легкой на любом языке. Я не хочу писать собственные сериализаторы или собственные парсеры.
Я ожидаю, что библиотека будет работать с таким кодом:
case class User(name: String, status: Status.Value)
val myUser = User("toto",Status.VALID)
val myMap: Map[String,Object] = ("key1" -> myUser, "key2" -> "value2")
Json.serialize(myMap)
Это то, что предоставляется в Java с помощью Gson, Jackson и других подобных инструментов.
Так что со Scala 2.10 я не знаю, какой инструмент использовать. И я не понимаю, зачем нам нужно создавать собственные сериализаторы для таких простых случаев. Может быть, Play2.1 Json быстрее, потому что он основан на макросах, но нет ли возможности, чтобы, если нет формата, он использовал отражение или что-то в этом роде?
Знаете ли вы какой-либо инструмент, который подходит для моего варианта использования?