Jackson 自定义过滤器,具有完整的 POJO 数据绑定

2024-01-08

这个问题延伸这个问题 https://stackoverflow.com/questions/38840659/conditional-field-requirement-based-on-another-field-value-in-jackson.

虽然如果您只有几个字段,前面的解决方案效果很好,但当您有十几个字段时,它就变得难以维护。现在,我当前的设置使用完整的数据绑定,因此我有一个 POJO,Jackson 将使用它来自动反序列化 JSON。

然而,和以前一样,某些字段有需要通过的限制。本质上,我正在寻找类似的答案this https://stackoverflow.com/questions/38840659/conditional-field-requirement-based-on-another-field-value-in-jackson/38847022#38847022,但无需设置任何属性。只是一个自定义反序列化器,它将充当过滤器并在字段不满足约束时抛出自定义异常。如果过滤器末尾没有抛出异常,Jackson 应该自动将 JSON 绑定到 POJO。


似乎Json模式 http://json-schema.org/可能适合您的需求。它允许在反序列化之前对 json 字符串进行灵活(且复杂)的验证规则。它包括必填字段、基于正则表达式的值检查、行业标准格式(例如,您可以将字段定义为“电子邮件”格式)、跨字段依赖项(在最新的 v4 中)等

以上是与语言无关的标准。至于Java实现,我使用this one https://github.com/daveclayton/json-schema-validator它支持最新的 json 模式版本(标准仍在发展中)。验证器的初始集成需要大量工作(因为我的 json 模型非常动态),但之后引入新的验证规则非常方便(只需要更改 json 模式文件)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jackson 自定义过滤器,具有完整的 POJO 数据绑定 的相关文章

随机推荐