Невозможно прочитать JSON в экземпляре класса * generic c, подобного этому, потому что информация об обобщениях используется во время компиляции и уже потеряна при запуске программы.
Джексон захватывает данные о дженериках с использованием подклассифицированного экземпляра TypeReference<T>
.
Map<String, String> testToJson = objectMapper.readValue(test, new TypeReference<Map<String, String>>(){});
. Проблема с этим подходом состоит в том, что Map<String, String>
почти никогда не описывает сложные данные (как в примере) правильно. В примере содержатся не только строковые значения, но и числа и даже вложенные объекты.
В подобных ситуациях, когда вы не хотите или не можете написать класс, описывающий структуру JSON, чем лучше выбор заключается в разборе JSON в древовидную структуру и ее обходе. Например:
JsonNode node = objectMapper.readTree(test);
String title = node.get("query").get("search").get(0).get("title").asText();
Integer offset = node.get("continue").get("strOffset").asInt()