Я пытаюсь разобрать строки json внутри строки json в Object с помощью Jackson ObjectMapper. Но я не могу найти чистый способ сделать это.
У меня есть таблица SQL, в которой хранятся списки в виде строк json, например "[1,2,3]"
. И я считываю все столбцы в Map, затем пытаюсь использовать objectMapper.convertValue
для превращения в объект Java.
Итак, вот небольшой фрагмент, чтобы воссоздать проблему. Обратите внимание, я не контролирую, как карта генерируется в реальном коде.
@Data
public class Main {
private List<Integer> bar;
public static void main(String[] args) throws Exception{
ObjectMapper objectMapper = new ObjectMapper();
Map<String, Object> objectMap = new HashMap<String, Object>();
objectMap.put("bar", "[1,2,3]");
// Main foo = objectMapper.convertValue(objectMap, Main.class)
String json = objectMapper.writeValueAsString(objectMap);
Main foo = objectMapper.readValue(json, Main.class);
System.out.println(foo.getBar());
}
}
Но это не правильно. Вместо того, чтобы анализировать строку, ObjectMapper пытается преобразовать String в List напрямую и не удалось. Я ожидаю, что foo.getBar () вернет список с 3 элементами, но код уже потерпел неудачу на этапе преобразования.