我正在使用带有播放框架的akka,我觉得序列化/反序列化jsons非常麻烦。 Play框架要求我定义来自/到JSON的编写者/读者。在我的项目中,我使用的巨大json对象可能会发生变化,我想让它更简单。有没有办法从案例类中提供一些默认的编写者/读者?
我知道这个功能是由lift-json(提取,分解方法)提供的,然而我需要将它从/转换为每个请求/响应的Play JSON。 Play JSON中是否有这样的功能?
答案 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]
该框架附带了String
,Long
等内置格式,如果您想使用其他案例类,例如Animal
,则需要像我上面那样为它创建一个格式。