Tyl*_*ler 3 json scala playframework-2.0
我只是花了几个小时来探索它Play Framework (2.5.1),我很困惑,为什么你会创建一个Format你已经定义Reads和Writes.通过为您的类定义Reads和Writes,您没有定义将类转换为和从中转换所需的所有功能JsValue吗?
正如这里的play-framework文档中所提到的
Format [T]只是Reads和Writes特征的混合,可以用于隐式转换来代替其组件.
格式是Reads [T]和Writes [T]的组合.因此,您可以为类型T定义单个隐式Format [T],并使用它来读取和写入Json,而不是为类型T定义单独的隐式Reads [T]和Writes [T].因此,如果您已经有了Reads [T]并且为您的类型T定义了Write [T],然后不需要Format [T],反之亦然.
Format的一个优点是,您可以为类型T定义单个隐式格式[T],而不是定义两个单独的Read [T]和Writes [T],如果它们都是对称的(即读取和写入).因此Format使您的JSON结构定义更少重复.例如,你可以做这样的事情
implicit val formater: Format[Data] = (
(__ \ "id").format[Int] and
(__ \ "name").format[String] and
(__ \ "value").format[String]
) (Data.apply, unlift(Data.unapply))
Run Code Online (Sandbox Code Playgroud)
而不是这个.
implicit val dataWriter: Writes[Data] = (
(__ \ "id").write[Int] and
(__ \ "name").write[String] and
(__ \ "file_type").write[String]
) (Data.apply)
implicit val dataWriter: Reads[Data] = (
(__ \ "id").read[Int] and
(__ \ "name").read[String] and
(__ \ "file_type").read[String]
) (unlift(Data.unapply))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
91 次 |
| 最近记录: |