Сериализация Json в Scala 2.10

До 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 быстрее, потому что он основан на макросах, но нет ли возможности, чтобы, если нет формата, он использовал отражение или что-то в этом роде?

Знаете ли вы какой-либо инструмент, который подходит для моего варианта использования?


person Sebastien Lorber    schedule 11.04.2013    source источник
comment
Обработка JSON была исправлена ​​в Play 2.1.1 — по крайней мере, для моего варианта использования обновление решило мои проблемы. plus.google.com/+playframework/posts/SQvSEne13HK   -  person mattanja    schedule 12.04.2013
comment
спасибо @mattanja проверю это   -  person Sebastien Lorber    schedule 12.04.2013


Ответы (2)


Существует множество форков Jerkson, перенесенных на 2.10, но я не знаю, сколько из них выпущено в репозитории Maven.

Вот мой, который в основном получен из Rand Hindi плюс несколько моих собственных патчей.

person Alex Cruise    schedule 11.04.2013
comment
Спасибо. Рэнд Хинди — мой друг, и я знал о его хранилище. Но мы стартап, и я хотел бы избежать неофициальных релизов, потому что они неофициальны и усложняют процесс разработки, особенно для разработчиков JS, которые не знают maven и которым нужно будет клонировать форт и создавать его локально. У нас пока нет Nexus или чего-то подобного. - person Sebastien Lorber; 12.04.2013
comment
Кстати, я вчера видел новый запрос на включение в Jerkson для Scala 2.10, так что, может быть, он скоро будет интегрирован? codahale создано 10 месяцев назад --› Я думаю, это может занять некоторое время :( - person Sebastien Lorber; 12.04.2013

Я заменил свой код Jerkson на модуль Jackson Scala, и он отлично работает.

person Sebastien Lorber    schedule 25.07.2013