java.lang.IllegalArgumentException: не найдено преобразователя для возвращаемого значения типа

С этим кодом

@RequestMapping(value = "/bar/foo", method = RequestMethod.GET)
    public ResponseEntity<foo> foo() {

        Foo model;
        ...
        return ResponseEntity.ok(model);
    }
}

Я получаю следующее исключение

java.lang.IllegalArgumentException: No converter found for return value of type

Я предполагаю, что объект не может быть преобразован в JSON, потому что Джексон отсутствует. Я не понимаю почему, потому что я думал, что Джексон был встроен с пружинной загрузкой.

Затем я попытался добавить Джексона в pom.xml, но у меня все еще та же ошибка

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.4.3</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.4.3</version>
</dependency>

Нужно ли менять какие-либо свойства пружинной загрузки, чтобы это работало?

Спасибо

 Akshay Vijay Jain27 окт. 2017 г., 16:40
 Vivek Mishra04 апр. 2018 г., 04:17
Используйте центральный репозиторий для загрузки jar-файлов. Если вы не пользователь maven, вы можете найти необходимые версии jar-файлов.repo1.maven.org/maven2/com/fasterxml/jackson/core

Ответы на вопрос(11)

Решение Вопроса

что один из вложенных объектов в Foo не имелgetter/setter

 Hank15 окт. 2017 г., 15:44
Огромное спасибо!
 GOXR3PLUS29 окт. 2018 г., 11:27
Сэр, ты потрясающий !!! 1
 user541229318 мар. 2017 г., 06:01
То же самое случилось со мной, это спасло мне жизнь :)
 Ayo K03 дек. 2018 г., 14:06
Вздох. Кто бы мог подумать. Спасибо! :)
 Oleksandr Loushkin20 мая 2017 г., 15:03
нужны только добытчики
 Michael M07 июн. 2017 г., 19:31
Это решило и мою проблему. Если кто-то продолжает получать ошибку конвертера, наиболее вероятной причиной является то, что Джексон не может найти / обработать необходимые методы получения. Проверьте ваш POJO добытчик внимательно! В моем случае у меня было свойство в нижнем регистре для одного свойства вместо ожидаемого случая с верблюдом: getmetaTag () вместо getMetaTag ()
 Nic Hartley16 нояб. 2018 г., 05:53
Также убедитесь, что геттер / сеттерыpublic! (Или, если вы, как и я, используете неизменяемые классы, убедитесь, что ваши поляpublic final не простоfinal)

использование@ResponseBody а такжеgetter/setter, Надеюсь, это решит вашу проблему.

@RequestMapping(value = "/bar/foo", method = RequestMethod.GET)
@ResponseBody
public ResponseEntity<foo> foo() {

и обновите свойmvc-dispatcher-servlet.xml:

<mvc:annotation-driven>
     <mvc:message-converters>
            <bean class="org.springframework.http.converter.StringHttpMessageConverter"/>
            <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
   </mvc:message-converters>
</mvc:annotation-driven>
 Marc15 июн. 2016 г., 19:20
Где мне установить конвертеры сообщений. У меня нет mvc-dispatcher-servlet.xml
 Marc15 июн. 2016 г., 19:13
Да, но это весна. Я использую Spring boot. Конфигурация другая
 Marc15 июн. 2016 г., 19:04
это весна У меня нет сервлет-диспетчер MVC. Вы знаете, есть ли недвижимость для этого?
 Marc15 июн. 2016 г., 19:06
К сожалению, ResponseBody не работает
 SkyWalker15 июн. 2016 г., 19:08
Используйте getter / setter для класса foo
 Hemant Nagpal15 дек. 2017 г., 14:18
Добавление "MappingJackson2HttpMessageConverter" работало для меня. Спасибо чувак. Я использую Spring 4.2.5 и столкнулся с этой проблемой. Я добавил выше конвертер в WebMvcConfigurerAdapter.
 UTF_or_Death04 июл. 2017 г., 16:16
@ Марк Я знаю, что это не твоя проблема, но ты можешь добавить конвертеры сообщений, добавивorg.springframework.boot.autoconfigure.web.HttpMessageConverters фасоль с@Bean аннотированный метод в вашем@SpringBootApplication учебный класс. Вы можете увидеть это, просто прочитавorg.springframework.boot.autoconfigure.web.WebMvcAutoconfiguration Класс загрузки автоконфигурации Spring невероятно удобен для чтения и часто является самым быстрым способом решения таких проблем.
 SkyWalker15 июн. 2016 г., 19:11
@Marc Пожалуйста, пройдите этот урок:sanjayingole.blogspot.com/2015/10/...
 SkyWalker15 июн. 2016 г., 19:17
Для весенней загрузки,stackoverflow.com/questions/33832735/...
 Marc15 июн. 2016 г., 19:09
Я не понимаю, что вы подразумеваете под этим. Проблема в том, что объект, который я отправляю, не тот, который я получаю. Там нет добытчик / установщик

5, нет web.xml, инициализировано AbstractAnnotationConfigDispatcherServletInitializer)

и, к сожалению, ее нельзя было решить путем добавления методов получения или добавления зависимостей Джексона.

Затем я посмотрел на Официальное руководство по весне и последовал их примеру, приведенному здесь:https://spring.io/guides/gs/actuator-service/ где пример также показывает преобразование возвращаемого объекта в формат JSON.

Затем я снова сделал свой собственный проект, с той разницей, что на этот раз я также добавил зависимости и плагины сборки, которые присутствуют вpom.xml файл примера Официального весеннего руководства, о котором я упоминал выше.

Измененные зависимости и часть сборки XML-файла выглядят так!

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

Вы можете увидеть то же самое в упомянутой ссылке выше.

И по волшебству, по крайней мере для меня, это работает. Так что, если вы уже исчерпали свои другие варианты, вы можете попробовать это, как было со мной.

Просто замечание: у меня не получилось, когда я добавил зависимости в свой предыдущий проект и установил и обновил Maven. Итак, мне пришлось снова сделать свой проект с нуля. Я не особо беспокоился об этом, так как мой примерный проект, но вы, возможно, захотите посмотреть и на него!

а затем узнал, что нужно преобразовать объект в JSON с помощью Object Mapper и передать его какJSON Object

@RequestMapping(value = "/getTags", method = RequestMethod.GET)
public @ResponseBody String getTags(@RequestParam String tagName) throws
        JsonGenerationException, JsonMappingException, IOException {
    List<Tag> result = new ArrayList<Tag>();
    for (Tag tag : data) {
        if (tag.getTagName().contains(tagName)) {
            result.add(tag);
        }
    }
    ObjectMapper objectMapper = new ObjectMapper();
    String json = objectMapper.writeValueAsString(result);
    return json;
}
 iBug05 янв. 2018 г., 05:43
Если у вас есть новый вопрос, пожалуйста, задайте его, нажавЗадать вопрос кнопка. Включите ссылку на этот вопрос, если это помогает обеспечить контекст.

что методы получения были доступны для всех свойств. Все еще получала ту же ошибку. Чтобы решить проблему, настройте MVC xml (конфигурацию) с

 <mvc:annotation-driven/>

Это необходимо для Spring, чтобы обнаружить присутствие Джексона и настроить соответствующие преобразователи.

потому что Spring Framework не может получить свойства вложенных объектов. Getters / Setters является одним из способов решения. Обнародование свойств - еще одно быстрое и грязное решение для проверки, если это действительно проблема.

Добавьте приведенную ниже зависимость в ваш pom.xml:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.8.1</version>
</dependency>
 heemin23 авг. 2016 г., 10:06
По умолчанию весенняя загрузка веб-стартера содержит зависимость Джексона.
 Akshay Vijay Jain27 окт. 2017 г., 16:34
Да, но нам нужно переопределить версию, там ее нужно

когда случайно поместил две одинаковые строки @JsonProperty ("some_value") в разные свойства внутри класса

я добавил только jackson-annotations.jar и jackson-databind.jar. Когда я добавил jackson-core.jar, проблема была исправлена.

упомянутый в сообщении об ошибке.

Ваш ответ на вопрос