杰克逊:自定义JSON解串器

时间:2010-09-14 17:00:32

标签: java json spring serialization jackson

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

1 个答案:

答案 0 :(得分:2)

好的,鉴于输入无效JSON(数字不能以'$'开头或包含'),不会调用反序列化器,并且任何更改都必须应用于解析器。杰克逊没有开关允许将这些内容视为数字。

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