Тип результата только Map<String, String>
, потому что у вас небезопасное приведение, которое делает его таким. Об этом будет предупреждение компилятора.
Универсальные типы существуют только во время компиляции, во время выполнения Карта не проверяет свои типы компонентов.
String value = item.getValue();
Из-за универсальных типов компилятор считает, что эта карта содержит только String
, поэтому вы можете написать строку выше. Но на самом деле он компилируется в
String value = (String) item.getValue(); // cast inserted by compiler
и произойдет сбой, если значение окажется чем-то другим.
"fuelAmount":20.0
Это не строка в JSON.
Вы должны преобразовать его в строку самостоятельно (или обработать другие типы значений, возвращаемых с карты).
Лучшее решение, вероятно, состоит в том, чтобы создать несколько "bean-классов" для десериализации JSON-анализатора. Они могут иметь именованные и типизированные свойства.