com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of cn.wen233.User (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value (‘ca2701f2-5191-4ae5-9f57-9b584f7a2690’)
使用通过@Autowired或者@Resource注入的Jackson提供的Bean ObjectMapper。
原因:
1、这个Bean自带实现了Root级别的几个反序列化器,通过set方法实现反序列化。(因此重新自定义某个类的反序列化器失效)
2、mapper的convertValue跟readValue都使用了反序列化器。
null值被当成null字符串被处理了。
// 定义 ObjectMapper objectMapper = new ObjectMapper(); SimpleModule simpleModule = new SimpleModule(); simpleModule.addDeserializer(ActiveNode.class, new ActiveNodeDeserializer()); objectMapper.registerModule(simpleModule); // 使用 Node startNode = mapper.readValue(curJsonNode.toString(), Node.class);