Привет, всем.
Возможно, тема уже подымалась.
Я попытался протестировать API, который отдаёт ответ JSON с Content-Type: text/html; charset=UTF-8. В коде пытался преобразовать ответ в объект путём:
MyModel model = response.as(MyModel.class);
У меня появилась ошибка:
java.lang.IllegalStateException: Cannot parse object because no supported Content-Type was specified in response. Content-Type was 'text/html; charset=UTF-8'.
Решил преобразовывать в объект другим путём:
String s = response.asString();
JsonPath jsonPath = JsonPath.from(s);
MyModel testMyModel = jsonPath.getObject("$", MyModel.class);
но получил следующую ошибку:
java.lang.IllegalStateException: Cannot deserialize object because no JSON deserializer found in classpath. Please put either Jackson (Databind) or Gson in the classpath.
Для решения этой проблемы воспользовался добавлением в pom.xml библиотеки:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.5</version>
</dependency>
но и тут поджидала очередная ошибка:
java.lang.NoClassDefFoundError: com/fasterxml/jackson/annotation/JsonMerge
Чтобы её пофиксить, нужно понизить версию библитеки jackson-databind
до 2.8.x (https://www.mkyong.com/gradle/java-lang-noclassdeffounderror-comfasterxmljacksonannotationjsonmerge/). Попробовав у меня всё равно воспроизвелась та же ошибка. Тогда понизил версию библиотеки до 2.7.9.5, перезапустил и всё заработало!
Надеюсь, кому-нибудь будет полезно.