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 岁?在这种情况下,我应该返回标准的WritesReads 吗?

谢谢

请您参考如下方法:

如果您想保留所有验证错误,可以。 Reads 似乎有 filterfilterNot 函数您可以在其中添加自己的验证错误,但它们最终会像这样定义 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 ,因为我通常不需要限制返回给客户端的内容。


标签:json
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号