我正在为一个返回JSON对象的java webapp编写一些验收测试.我想验证JSON是否返回了针对模式的验证.任何人都可以建议任何工具吗?
我使用 Spring Boot 构建了一个 REST 端点。JSON被发布到端点。杰克逊转换了JSON给我一个对象。
看起来JSON像这样:
{
"parameterDateUnadjusted": "2017-01-01",
"parameterDateAdjusted": "2017-01-02"
}
Run Code Online (Sandbox Code Playgroud)
Jackson 将 转换JSON为基于此类的对象:
public class ParameterDate {
@NotNull(message = "Parameter Date Unadjusted can not be blank or null")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date parameterDateUnadjusted;
@NotNull(message = "Parameter Date Adjusted can not be blank or null")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date parameterDateAdjusted;
private Date parameterDateAdded;
private Date parameterDateChanged;
}
Run Code Online (Sandbox Code Playgroud)
这一切都很好。我遇到的问题是我想在杰克逊转换数据之前验证数据。例如,如果我发布
{
"parameterDateUnadjusted": "2017-01-01",
"parameterDateAdjusted": "2017-01-40"
}
Run Code Online (Sandbox Code Playgroud)
其中parameterDateAdjusted不是有效日期(没有包含 40 …
我正在使用 Spring Boot 来运行 API。我想在反序列化之前验证用户请求参数,以防止 Jackson 抛出反序列化异常。我的想法是最好在没有异常处理的情况下进行验证,但如果您认为我错了,请告诉我。
现在,我制作了一个带有@ControllerAdvice注释的异常处理程序控制器,用于在异常冒泡给用户之前捕获异常,但是有没有办法在杰克逊反序列化之前验证用户输入以检查错误?
我开始尝试使用 spring 验证,但是如果我编写一个自定义验证器并注释请求参数,@Validate验证是否会在反序列化之前进行?春季验证是正确的选择吗?
我研究了使用注释进行验证(JSR 380),但我认为我需要对验证进行更多控制,因此这就是我编写自己的自定义验证器的原因。
我想我可以编写一个自定义反序列化器来调用我的自定义验证器,但这是最好的方法。我正在寻找最佳实践和良好的验证策略。
在此先感谢您的帮助。
spring-boot ×2
jackson ×1
jackson2 ×1
java ×1
json ×1
junit ×1
schema ×1
spring ×1
validation ×1