Генеративность Джерси<Коллекция> Исключение

#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