Мне нужно получить простое решение для сериализации JSON с минимумом церемоний. Поэтому я был очень счастлив найти эту готовящуюся к выпуску библиотеку Play 2.2. Это отлично работает с классами простого случая, например.
import play.api.libs.json._
sealed trait Foo
case class Bar(i: Int) extends Foo
case class Baz(f: Float) extends Foo
implicit val barFmt = Json.format[Bar]
implicit val bazFmt = Json.format[Baz]
Но не получается следующее:
implicit val fooFmt = Json.format[Foo] // "No unapply function found"
Как мне установить предполагаемый пропавший экстрактор для Foo
?
Или вы порекомендуете любую другую автономную библиотеку, которая обрабатывает мой случай более или менее полностью автоматически? Меня не волнует, с макросами ли это во время компиляции или отражением во время выполнения, пока это работает из коробки.
Foo
линиюsealed trait Foo
? Что же тогда вы ожидаете? Я полагаю, чтоJson.format
будет работать для обычных классов, если у них есть методыapply()
иunapply()
. - person Carsten   schedule 10.06.2013Json.format
для трейтов невозможен, но вы можете написать их: stackoverflow.com/questions/14145432/; также я наткнулся на этот вопрос, который может вас заинтересовать: stackoverflow.com/questions/6891393/ - person Carsten   schedule 10.06.2013knownDirectSubclasses
, показанный здесь: scala-lang.org/api/current/. Я пока не знаю ни одной другой библиотеки Json, которая бы это сделала ... - person Andy   schedule 14.06.2013writer
уже работает, но некоторые проблемы нужно исправить с одноэлементными объектами в частиreader
. - person 0__   schedule 17.06.2013