diff options
Diffstat (limited to 'src/main/scala/cc/spray/json/StandardFormats.scala')
-rw-r--r-- | src/main/scala/cc/spray/json/StandardFormats.scala | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/main/scala/cc/spray/json/StandardFormats.scala b/src/main/scala/cc/spray/json/StandardFormats.scala index 8b0dc3a..1c44716 100644 --- a/src/main/scala/cc/spray/json/StandardFormats.scala +++ b/src/main/scala/cc/spray/json/StandardFormats.scala @@ -25,16 +25,18 @@ import scala.{Left, Right} trait StandardFormats { this: AdditionalFormats => - private type JF[T] = JsonFormat[T] // simple alias for reduced verbosity + private[json] type JF[T] = JsonFormat[T] // simple alias for reduced verbosity - implicit def optionFormat[T :JF] = new JF[Option[T]] { + implicit def optionFormat[T :JF] = new OptionFormat[T] + + class OptionFormat[T :JF] extends JF[Option[T]] { def write(option: Option[T]) = option match { case Some(x) => x.toJson case None => JsNull } def read(value: JsValue) = value match { case JsNull => None - case x => Some(x.fromJson) + case x => Some(x.fromJson[T]) } } |