Jackson:自定义 JSON 反序列化器

发布于 2024-09-19 04:15:36 字数 199 浏览 8 评论 0原文

我正在使用 Jackson 库的 ObjectMapper 将 JSON 反序列化为 Java 对象。我正在使用 Spring '接线'。我创建了自定义反序列化器来执行从 JSON 字符串到 POJO 的转换。但是,当输入错误时(例如,数字作为“124A”传递 - 非法字符),则会调用默认反序列化器并抛出 NumberFormatException。有没有办法阻止默认转换器被调用?

I am using Jackson library's ObjectMapper for deserializing JSON into Java objects. I am using Spring 'wiring'. I have created custom deserializers to do the conversion from JSON string to POJO. However, when the input is bad (eg. a number is passed as "124A" - illegal character) a default deserialiser is invoked and bombs with the NumberFormatException. Is there a way to prevent default converters from being called?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

却一份温柔 2024-09-26 04:15:39

好的,假设输入不是有效的 JSON(数字不能以“$”开头或包含“$”),则不会调用反序列化器,并且任何更改都必须应用于解析器。 Jackson 中没有任何开关允许此类内容被视为数字。

如果您可以控制输入,只需将值更改为字符串(在值周围添加双引号)。然后解析器将其作为 JSON 字符串传递,数据绑定组件有机会处理它(JsonDeserializer)。

Ok, given that input is not valid JSON (numbers can not start with or contain '$'), deserializer will not be called, and any change would have to apply to parser. There are no switches in Jackson to allow such content to be considered numbers.

If you can control input, just change value to a String (add double-quotes around value). Parser then passes it as JSON String, and data binding components get a chance to handle it (JsonDeserializer).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文