У меня есть POJO, у которого есть внутренняя карта. Я хочу, чтобы это deserialize в HashMap из моего JSON, но Джексон десериализует внутреннюю карту от JSON в LinkedHashMap. Я могу заставить его использовать HashMap, изменив тип карты с «Карта» на «HashMap», но я хочу знать, есть ли способ сказать Джексону deserialize в конкретную реализацию Карты?Jackson JSON object mapper deserializes to LinkedHashMap вместо HashMap
Вот JSON:
{
"transforms": {
"variable_name1": [{
"min": 100,
"max": 200,
"value": 0.6
}],
"variable_name2": [{
"min": 100,
"max": 200,
"value": 0.6
}],
"variable_name3": [{
"min": 100,
"max": 200,
"value": 0.6
}]
}
}
А класс Трансформации:
public class Transformer {
Map<String, List<Transform>> transforms;
public Transformer() {
transforms = new HashMap<String, List<Transform>>();
}
public void setTransforms(Map<String, List<Transform>> transforms) {
this.transforms = transforms;
}
}
Как я использую ObjectMapper:
try(Reader reader = new InputStreamReader(TransformTester.class.getResourceAsStream("transforms.json"), "UTF-8")) {
ObjectMapper objMapper = new ObjectMapper();
Transformer tr = objMapper.readValue(reader, Transformer.class);
}
Зачем вам все это? –
Джексон использует 'LinkedHashMap', чтобы почтить порядок полей от JSON. Что не так с этим? – Andreas
@ Аndreas Нет лишних накладных расходов с LinkedHashMap? Меня не волнует порядок. – Seephor