我有一个通常输入的Java类。它应该在收到一些json后返回一个T类型的对象。我使用以下代码来创建对象:
ObjectMapper mapper = new ObjectMapper();
this.object = mapper.readValue(json, type);
此方法抛出JsonMappingException
,如果对象的类型不正确,则应该这样做。我遇到的问题(当单元测试时)是如果我传入一个不正确类型的json,只要两个对象都是pojos,就不会抛出异常。我只是回到一个正确类型的对象,其中所有字段都为空。
为什么异常不会被抛到这里?如果我传入一些json,其中包含一些字段,这些字段在应该映射到的对象类型上不存在,那么我不应该从中获得异常吗?
答案 0 :(得分:2)
你可能有:
@JsonIgnoreProperties(ignoreUnknown = true)
设置在某处,所以杰克逊不会抱怨不匹配。
答案 1 :(得分:0)
你怎么看杰克逊知道JSON不代表预期的类型?除了基本的Object / Array / scalars结构之外,JSON数据没有类型。因此只要结构兼容,事情就可以了,这是设计的。