#java #spring #jersey
Вопрос:
Привет, мое весеннее приложение выдает следующее исключение при выполнении следующего кода:
@GET
@Path("/categories")
@Produces(value = {MediaType.APPLICATION_JSON})
public Response getCategories() {
LOGGER.info("Accessed /jobs/categories GET controller");
final Collection<String> categories = jobService.getJobsCategories().stream().map(Enum::name).collect(Collectors.toList());
final Collection<Integer> aux = Arrays.asList(1,2,3);
return Response.ok(new GenericEntity<Collection<String>>(categories){}).build();
}
Исключение: ago 05, 2021 2:26:48 PM org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor aroundWriteTo GRAVE: MessageBodyWriter not found for media type=application/json, type=class java.util.ArrayList, genericType=java.util.Collection<java.lang.String>.
Я не знаю, в чем дело, у меня нет проблем при обертывании пользовательских классов, таких как User (с геттерами, сеттерами и конструктором по умолчанию). Проблема возникает при использовании таких классов, как Integer/Long/String…
Я видел эту проблему повсюду, но хорошего ответа на нее нет.
Комментарии:
1. Вы пытались использовать Список вместо Коллекции? Кроме того, если вы используете Jackson в качестве своего провайдера JSON, вам, вероятно, даже не нужно упаковывать его в общий формат. Он в основном используется для поставщиков на базе JAXB.
2. @Paulsamsota Я попробовал следующее: ` Окончательный список<Строка> категорий = JobService.getJobsCategories().поток().карта(Перечисление::имя).сбор(коллекторы. ToList()); возвращает Response.ok(новое обобщение<Список<Строка><Строка>>(категории){}).сборка(); } « Но все равно получаем одно и то же исключение. Я использую Джерси-media-moxy
3. Я бы просто переключился на Джексона. джерси-медиа-джсон-джексон
4. @PaulSamsotha дело в том, что я не могу изменить зависимость, это нужно сделать с помощью moxy