【发布时间】:2015-03-19 10:35:35
【问题描述】:
我试图弄清楚如何调整 spring/jackson 将 JSON 字符串(存储在文件中)转换为各种 POJO 的方式。例如,如果我有这个 JSON:
{
"rates":{
"EURUSD":5.4321,
"USDHKD":1.2345
}
}
我实际上想获得我的“Rates”类的一个实例。在里面我想要一个包含每个单独费率的列表。
在我的 spring 配置文件中,我创建了这个条目:
@Bean
public ObjectMapper jsonObjectMapper() {
return new MappingJackson2HttpMessageConverter().getObjectMapper();
}
在我的服务课上,我这样做了:
@Autowired
ObjectMapper jsonObjectMapper;
public Rates currentRates() {
Resource resource = this.ctx.getResource("classpath:stub/data/rates/Rates-01.json");
return this.jsonObjectMapper.readValue(resource.getURL(), Rates.class);
}
问题是我试图弄清楚如何将包含货币的地图作为一个键,将这些货币分成两部分,然后创建一个包含两种货币和汇率的 RateEntry 对象,然后再填充列表Rates 类。
我一直在研究 Spring 的转换服务,其想法是定义一个将 Map 映射到列表的转换器。即这个签名:Converter<Map<String, BigDecimal>, List<Rate>>。然而,这是基于在调用转换服务之前首先将 JSON 转换为标准类型的假设。我现在认为的一个假设是不正确的。
所以我现在想弄清楚是否需要注册某种自定义 ObjectMapper 来处理直接从 JSON 字符串数据读取。但这听起来有点过头了,因为我只想调整部分对象图,让默认转换器处理其余部分。
任何指针表示赞赏。谢谢。
【问题讨论】:
标签: json spring jackson type-conversion