Я пытаюсь выяснить, как настроить способ, которым Spring/Jackson преобразует строку JSON (хранящуюся в файле) в различные POJO. Например, если у меня есть этот JSON:Как изменить Spring/jackson JSON deserialisation
{
"rates":{
"EURUSD":5.4321,
"USDHKD":1.2345
}
}
Я на самом деле хочу, чтобы получить экземпляр моего класса "ставки. Внутри я хочу Список, содержащий каждую индивидуальную ставку.
В моем файле весна конфигурации Я создал эту запись:
@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, содержащий две валюты и ставку, перед заполнением списка в классе «Тариф».
Я искал службу преобразования Spring с идеей определения конвертера, который отображает карту в список. т.е. эта подпись: Converter<Map<String, BigDecimal>, List<Rate>>
. Однако это основано на предположении, что JSON сначала преобразуется в стандартные типы до вызова службы преобразования. Предположение, которое я сейчас считаю неправильным.
Так что теперь я пытаюсь выяснить, нужно ли мне регистрировать какой-то пользовательский ObjectMapper, чтобы обрабатывать чтение непосредственно из данных JSON String. Но это звучит как «убить», так как я хочу только отрегулировать часть графа объектов и позволить конвертерам по умолчанию обрабатывать остальные.
Любые указатели оценили. Благодарю.