我正在使用第三方REST API,它在JSON响应中返回'NaN':(我无法更改响应。
我正在使用带有RestTemplate的Spring MVC和内置的消息转换器将JSON反序列化为Object。
我想知道,如果有一种智能方法可以设置JsonParser.Feature.ALLOW_NON_NUMERIC_NUMBERS
属性以允许响应中的NaN。
因为我有其他消息转换器,我不需要自己配置,我现在正在执行以下操作:
List<HttpMessageConverter<?>> converters = restTemplate.getMessageConverters();
for (HttpMessageConverter converter : converters) {
if (converter instanceof MappingJacksonHttpMessageConverter) {
ObjectMapper objectMapper = ((MappingJacksonHttpMessageConverter) converter).getObjectMapper();
objectMapper.configure(JsonParser.Feature.ALLOW_NON_NUMERIC_NUMBERS, true);
}
}
这有效,但我不喜欢这样的事实:我是a)迭代和b)进行比较的实例只是为了设置这个属性。
更聪明/更好的方法是什么?
答案 0 :(得分:1)
以下是您的选择:
MappingJacksonHttpMessageConverter
,然后将resttemplate的消息转换器设置为该实例。见RestTemplate.html#setMessageConverters(java.util.List)
。请注意,这将删除在实例化RestTemplate时自动实例化的所有默认消息转换器。