将案例类导出/序列化为json

时间:2015-07-05 12:46:46

标签: playframework akka

我正在使用带有播放框架的akka​​,我觉得序列化/反序列化jsons非常麻烦。 Play框架要求我定义来自/到JSON的编写者/读者。在我的项目中,我使用的巨大json对象可能会发生变化,我想让它更简单。有没有办法从案例类中提供一些默认的编写者/读者?

我知道这个功能是由lift-json(提取,分解方法)提供的,然而我需要将它从/转换为每个请求/响应的Play JSON。 Play JSON中是否有这样的功能?

1 个答案:

答案 0 :(得分:0)

起初看起来很复杂,但实际上很简单。 Scala是强类型的,JSON的动态特性与动态语言(如JavaScript或Ruby)一起使它有点烦人,但你会开始意识到强类型的好处。

import play.api.libs.json._

case class Animal(name: String, age: Int)
implicit val formatAnimal = Json.format[Animal]

这就是你所需要的一切。然后,解析:

val animal: Animal = Json.parse("""{"name":"Bob","age":5}""").as[Animal]

并字符串化:

val json: String = Json.toJson(animal)

您还可以使用JsPath来解析嵌套在JSON中的内容,例如:

(jspath / "data" / "result").as[Animal]

该框架附带了StringLong等内置格式,如果您想使用其他案例类,例如Animal,则需要像我上面那样为它创建一个格式。