播放框架 Json 验证

Play Framework Json Validation

我正在尝试解析 json 结构,对其进行验证并使用验证结果。

 def createEntry = Action(parse.tolerantJson) { request =>
  request.body.validate[MyJson].map { myJson =>
    // do something with the MyJson object
  }.recoverTotal { err => BAD_REQUEST }

MyJson 对象如下所示:

case class MyJson(
  complexType: ComplexType,
  strs: Seq[String],
  maps: Map[String, ComplexType]
)

case class ComplexType(
  str1: String,
  bool1: Boolean,
  cxType2: ComplexType2,
  maps: Map[String, String]
)

case class ComplexType2(str: String, strs: Seq[String])

验证方法会自动尝试将 JSON 字符串装入对象类型吗? os 我应该再写一个正文解析器吗?

假设您在 MyJson 范围内有适当的 FormatReads 对象,是的,response.body.validate 会自动将 JSON 字符串解析为MyJson 实例,只有在 JSON 验证失败时才进入 recoverTotal 块(即请求中的 JSON 无法解析为 MyJson,即使这是一个有效的 JSON 字符串)。