Playframework 具有自定义读取逻辑的Json格式

Playframework 具有自定义读取逻辑的Json格式,playframework,Playframework,如果我有一种格式,例如(uu \“category”).format[String],您将如何为读取添加验证。例如,(\uuuu\“category”).format[String].filter(ValidationError(“category not valid”))(ss=>categories.contains(ss))。不幸的是,此代码将类型从格式转换为读取,这意味着我需要分别实现读取和写入。在这种情况下,我将明确定义读取和写入,并生成一种将它们组合在一起的格式:val myForm

如果我有一种格式,例如
(uu \“category”).format[String]
,您将如何为读取添加验证。例如,
(\uuuu\“category”).format[String].filter(ValidationError(“category not valid”))(ss=>categories.contains(ss))
。不幸的是,此代码将类型从格式转换为读取,这意味着我需要分别实现读取和写入。

在这种情况下,我将明确定义读取和写入,并生成一种将它们组合在一起的格式:
val myFormat=Format(myRead,myWrite)
-这就是您试图避免的吗?完全正确!这看起来不像是一个内置函数。读写分离的缺点是键必须定义两次,这会导致更多的键入和打字错误。创建隐式助手似乎很简单。def filterReads(error:ValidationError)(f:T=>Boolean):OFormat[T]={OFormat(format.filter(error)(f),format)}在这种情况下,我将显式定义读和写,并生成一种组合它们的格式:
val myFormat=format(myRead,myWrite)
-这就是您试图避免的吗?没错!这看起来不像是一个内置函数。读写分离的缺点是键必须定义两次,这会导致更多的键入和打字错误。创建隐式助手似乎很简单。def filterReads(错误:ValidationError)(f:T=>Boolean):of格式[T]={of格式(format.filter(error)(f),format)}