playframework之Play : the most concise form of JSON validation
yxwkf
阅读:47
2025-02-15 21:57:57
评论:0
我想问一个问题,关于Play中JSON验证最简洁的方式!框架
在官方 Play 教程中,我找到了有关 JSON Macro Inception 的主题。它的序列化/反序列化的主要思想看起来很不错:
import play.api.libs.json._
case class Person(name: String, age: Int)
object Person{
implicit val personFmt = Json.format[Person]
}
但是如果我想在此处放置一些验证约束怎么办?例如我想接受 18 - 60 岁?在这种情况下,我应该返回标准的Writes
和Reads
吗?
谢谢
请您参考如下方法:
如果您想保留所有验证错误,可以。 Reads 似乎有 filter
和 filterNot
函数您可以在其中添加自己的验证错误,但它们最终会像这样定义 Reads
一样冗长:
import play.api.libs.json._
import play.api.libs.functional.syntax._
case class Person(name: String, age: Int)
object Person{
implicit val personFmt: Reads[Person] = (
(__ \ "name").read[String] and
(__ \ "age").read[Int](Reads.min(18) keepAnd Reads.max(60))
)(Person.apply _)
}
我通常会使用上面更详细的样式定义我的 Reads
,并使用 Json.writes[T]
宏定义 Writes
,因为我通常不需要限制返回给客户端的内容。
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。