restful mvc example ejemplo java json spring spring-mvc spring-4

java - mvc - Cómo devolver datos JSON desde Spring Controller usando @ResponseBody



spring rest ejemplo (7)

Spring versión 4.2.0, Hibernate 4.1.4 Aquí está mi función de Controller :

@RequestMapping(value = "/mobile/getcomp", method = RequestMethod.GET) @ResponseBody public List<Company> listforCompanies() { List<Company> listOfCompanies= new ArrayList<Company>(); listOfCompanies = companyManager.getAllCompanies(); return listOfCompanies; }

Dependencia del mapeador Jackson JSON en Pom.xml :

<!-- Jackson JSON Mapper --> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-asl</artifactId> <version>${jackson.version}</version> </dependency>

Obteniendo la lista en mi ArrayList , pero al regresar se muestra el siguiente error:

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)

Link al ejemplo que estoy siguiendo.


Agregue la siguiente dependencia a su pom.xml:

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


Cuando me enfrenté a este problema, simplemente puse métodos getter setter y mis problemas se resolvieron.

Estoy usando Spring boot versión 2.0.


En mi caso, estaba usando jackson-databind-2.8.8.jar que no es compatible con JDK 1.6 que necesito usar, por lo que Spring no estaba cargando este convertidor. Bajé la versión y funciona ahora.


Estaba enfrentando el mismo problema. No puse @ResponseBody desde que estaba usando @RestController . Pero aún así recibí un error porque no puse el método getter/setter para la clase Company. Entonces, después de poner el getter/setter mi problema se resolvió.


Estaba usando groovy + springboot y obtuve este error.

Agregar getter / setter es suficiente si estamos usando la siguiente dependencia.

implementation ''org.springframework.boot:spring-boot-starter-web''

Como las clases principales de Jackson vienen con eso.


También debe asegurarse de que el bean devuelto no esté vacío (y Jackson puede serializarlo). En mi caso particular, intenté devolver una instancia de un objeto sin getters y setters y sin ninguna anotación jackson y con campos iguales a nulo. Recibí el siguiente mensaje:

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) )


Teniendo en cuenta la respuesta de @Arpit, para mí funcionó solo cuando agregué dos dependencias de 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>

y configurado, por causa, web.xml <mvc:annotation-driven/> .

La respuesta original que me ayudó está aquí: https://.com/a/33896080/3014866