玩框架:如何在Scala中serialize/deserializefrom/toJSON
Play framework: how to serialize/deserialize from/to JSON in Scala
在java中我使用了jackson和Gson带注解,Play中有类似的东西吗?它迫使我在 类:
之外创建另一个这样的对象
implicit val payloadRead : Reads[payload] = (
(JsPath \ "act").read[String] and
(JsPath \ "sk").read[Int] and
(JsPath \ "uid").read[String] and
(JsPath \ "ft").read[String] and
(JsPath \ "lt").read[String] and
(JsPath \ "em").read[String] and
(JsPath \ "nts").read[String] and
(JsPath \ "ugr").read[Int]
) (payload.apply _)
Play 确实提供了宏来为您生成上述内容,例如:
implicit val payloadRead = Json.reads[payload]
有关文档,请参阅 here。
也就是说,Play json 支持的一大优点是它是明确的。与 Jackson 相比,您可以更灵活地组合和重用解析器。对于 Jackson,您真的不知道它在做什么,它会进行大量反射以访问您的 class,这对您来说是完全不透明的。相比之下,Play 的 json 支持中没有使用反射,因此您拥有完全的控制权。
在java中我使用了jackson和Gson带注解,Play中有类似的东西吗?它迫使我在 类:
之外创建另一个这样的对象 implicit val payloadRead : Reads[payload] = (
(JsPath \ "act").read[String] and
(JsPath \ "sk").read[Int] and
(JsPath \ "uid").read[String] and
(JsPath \ "ft").read[String] and
(JsPath \ "lt").read[String] and
(JsPath \ "em").read[String] and
(JsPath \ "nts").read[String] and
(JsPath \ "ugr").read[Int]
) (payload.apply _)
Play 确实提供了宏来为您生成上述内容,例如:
implicit val payloadRead = Json.reads[payload]
有关文档,请参阅 here。
也就是说,Play json 支持的一大优点是它是明确的。与 Jackson 相比,您可以更灵活地组合和重用解析器。对于 Jackson,您真的不知道它在做什么,它会进行大量反射以访问您的 class,这对您来说是完全不透明的。相比之下,Play 的 json 支持中没有使用反射,因此您拥有完全的控制权。