Ответ 1
Добавьте приведенную ниже зависимость к вашему pom.xml:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.5.0</version>
</dependency>
Spring версия 4.2.0, Hibernate 4.1.4
Вот моя функция Controller
:
@RequestMapping(value = "/mobile/getcomp", method = RequestMethod.GET)
@ResponseBody
public List<Company> listforCompanies() {
List<Company> listOfCompanies= new ArrayList<Company>();
listOfCompanies = companyManager.getAllCompanies();
return listOfCompanies;
}
зависимость транслятора Jackson JSON в Pom.xml
:
<!-- Jackson JSON Mapper -->
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>${jackson.version}</version>
</dependency>
Получение списка в моем ArrayList
, но при возврате отображается следующая ошибка:
SEVERE: Servlet.service() for servlet [dispatcherServlet] in context with path [/IrApp] threw exception [Request processing failed; nested exception is java.lang.IllegalArgumentException: No converter found for return value of type: class java.util.ArrayList] with root cause
java.lang.IllegalArgumentException: No converter found for return value of type: class java.util.ArrayList
at org.springframework.util.Assert.isTrue(Assert.java:68)
at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:124)
Ссылка в следующем примере.
Добавьте приведенную ниже зависимость к вашему pom.xml:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.5.0</version>
</dependency>
Я столкнулся с такой же проблемой. Я не ставил @ResponseBody
, так как использовал @RestController
. Но все же я получал ошибку, потому что не использовал метод getter/setter
для класса Company. Поэтому после установки getter/setter
моя проблема была решена.
Вы также должны быть уверены, что возвращенный bean не пуст (и может быть сериализован Jackson). В моем конкретном случае я попытался вернуть экземпляр объекта без геттеров и сеттеров и без аннотации джексона и с полями равными нулю. Я получил следующее сообщение:
com.fasterxml.jackson.databind.JsonMappingException:
No serializer found for class com.foo.bar.Baz and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) )
Когда я столкнулся с этой проблемой, я просто применил только методы getter setter, и мои проблемы были решены.
Я использую Spring версию для загрузки 2.0.
Учитывая ответ @Arpit, для меня это работало только тогда, когда я добавлял две зависимости Jackson:
<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>
и настроен, причины, web.xml <mvc:annotation-driven/>
.
Оригинальный ответ, который мне помог: fooobar.com/questions/144655/...
В моем случае я использовал jackson-databind-2.8.8.jar
, который несовместим с JDK 1.6
Мне нужно использовать, чтобы Spring не загружал этот конвертер. Я понизил версию, и теперь она работает.
Я использовал Groovy + Springboot и получил эту ошибку.
Добавление getter/setter достаточно, если мы используем зависимость ниже.
implementation 'org.springframework.boot:spring-boot-starter-web'
Как основные классы Джексона идут с этим.