【发布时间】:2020-03-17 08:54:36
【问题描述】:
我必须验证 JSON 有效负载以检查是否通过了 Rest API 规范中提到的所有请求属性。其中一些的值可以为空。不适合使用 @NotNull、@NotEmpty 等 JSON 注释,因为它们也会验证值。
我在构造函数上尝试过@Jsoncreator。该解决方案非常适合简单的有效负载,但我不清楚在涉及嵌套对象的复杂有效负载的情况下如何使其工作。
另一个需要强调的问题是相同的对象用于 POST 和 PUT 操作负载。我只需要验证 PUT 操作。
您能否提出可行的解决方案?
对于 2 个属性的 JSON 请求 - 姓名、年龄 -
有效载荷 -
{"name" :"StackOverflow", "age" :99}
{"name" :"StackOverflow", "age" :null}
有效载荷 - {“名称”:“堆栈溢出”}
【问题讨论】:
-
您可以从@Valid when creating objects with jackson without controller开始。但我知道您需要更多地检查有效负载中是否存在“属性”,因此必须在有效负载反序列化为
POJO之前检查它。为了使问题更清晰 - 您能否准备一些示例并提供预期的验证输出? -
@michal ziobar - 我添加了一些样本。希望这能更好地解释要求。
-
您想将此
JSON反序列化为POJO还是Map?您想如何定义需要哪些字段、路径、JSON Pointer?您想使用注解并手动指定它们,还是从POJO类中读取所有属性并检查每个属性?
标签: json spring rest spring-mvc jackson