有没有办法使用 Playframework Json 宏生成格式进行部分实体验证?

Is there a way to use Playframework Json macro generated format for partial entity validation?

我的程序堆栈是 ReactiveMongo 0.11.0,Scala 2.11.6,Play 2.4.2。

我正在为我的控制器添加 PATCH 功能支持。我希望它是类型安全的,这样 PATCH 就不会弄乱 Mongo.

中的数据

当前的肮脏解决方案是

  1. 首先从 Mongo 读取对象,
  2. 使用提供的补丁执行 JsObject.deepMerge,
  3. 检查该值仍然可以反序列化为目标类型。
  4. 将合并的对象序列化回 JsObject,并检查该补丁仅包含合并中存在的字段 Json(这样就不会向存储的对象添加垃圾)
  5. 在 mongo
  6. 调用实际 $set

这显然不完美,但效果很好。我会编写宏来生成适当的格式泛化,但这可能会花费太多时间,而我目前缺少这些时间。

有没有办法像这样使用 Playframework Json 宏生成格式进行部分实体验证? 或者任何其他解决方案,可以很容易地集成到 Playframework 中。

在@julien-richard-foy 的帮助下制作了一个小型图书馆,完全按照我的意愿去做。

https://github.com/clemble/scala-validator

需要添加一些文档,我会将其发布到存储库。