【发布时间】:2011-04-12 06:54:53
【问题描述】:
我正在使用 Jackson 库的 ObjectMapper 将 JSON 反序列化为 Java 对象。我正在使用 Spring '接线'。我创建了自定义反序列化器来执行从 JSON 字符串到 POJO 的转换。然而,当输入错误(例如,一个数字作为“124A” - 非法字符传递)时,会调用默认的反序列化器并使用 NumberFormatException 进行轰炸。有没有办法阻止调用默认转换器?
【问题讨论】:
-
听起来您希望正确解析无效的 json,这听起来不对。我错过了什么吗?
-
没错。当 JSON 字符串格式正确时(例如 JSON 编号“123”),调用自定义反序列化器没有任何问题,但是当输入包含非法字符(例如 JSON 编号“123A”)时,不会调用自定义反序列化器,a而是调用默认的反序列化器。
-
你是不是解析器给出了错误?输入必须始终是有效的 JSON;只有这样才能反序列化(从JSON类型到Java类型)。
-
解析器中有一些方便的方法可以调用反序列化器(通过 ObjectMapper),所以在某种程度上是的。
标签: java json spring serialization jackson