Como retorno json de requisição com spring boot

8 respostas
java
M

Olá amigos, estou tentando retornar um json de uma requisicao (GET) porém nao estou conseguindo, esta dando o seguinte erro ao iniciar o servidor.

org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘linguagemController’: Failed to introspect bean class [br.com.spring.boot.controller.LinguagemController] for lookup method metadata: could not find class that it depends on; nested exception is java.lang.NoClassDefFoundError: net/minidev/json/JSONObject
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.determineCandidateConstructors(AutowiredAnnotationBeanPostProcessor.java:269) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineConstructorsFromBeanPostProcessors(AbstractAutowireCapableBeanFactory.java:1118) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1091) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:513) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:761) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:866) ~[spring-context-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:542) ~[spring-context-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122) ~[spring-boot-1.5.3.RELEASE.jar:1.5.3.RELEASE]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:737) [spring-boot-1.5.3.RELEASE.jar:1.5.3.RELEASE]
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:370) [spring-boot-1.5.3.RELEASE.jar:1.5.3.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:314) [spring-boot-1.5.3.RELEASE.jar:1.5.3.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1162) [spring-boot-1.5.3.RELEASE.jar:1.5.3.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1151) [spring-boot-1.5.3.RELEASE.jar:1.5.3.RELEASE]
at br.com.spring.boot.Boot.main(Boot.java:12) [classes/:na]
Caused by: java.lang.NoClassDefFoundError: net/minidev/json/JSONObject
at java.lang.Class.getDeclaredMethods0(Native Method) ~[na:1.8.0_151]
at java.lang.Class.privateGetDeclaredMethods(Unknown Source) ~[na:1.8.0_151]
at java.lang.Class.getDeclaredMethods(Unknown Source) ~[na:1.8.0_151]
at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:613) ~[spring-core-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:524) ~[spring-core-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:510) ~[spring-core-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.determineCandidateConstructors(AutowiredAnnotationBeanPostProcessor.java:247) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
… 18 common frames omitted
Caused by: java.lang.ClassNotFoundException: net.minidev.json.JSONObject
at java.net.URLClassLoader.findClass(Unknown Source) ~[na:1.8.0_151]
at java.lang.ClassLoader.loadClass(Unknown Source) ~[na:1.8.0_151]
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) ~[na:1.8.0_151]
at java.lang.ClassLoader.loadClass(Unknown Source) ~[na:1.8.0_151]
… 25 common frames omitted

O que estou fazendo de errado?

Segue meu codigo de tentativa:

@GetMapping("/testeJson")

@ResponseBody

public JSONObject testeJson(){

JSONObject obj = new JSONObject();

obj.put(name, matheus);

return obj;

}

8 Respostas

M

alguem por favor???

M

alguem ???

A

Amigo segue esse trecho de código como exemplo

@RestController

@RequestMapping("/api")

public class TituloJsonController {
@CrossOrigin
@RequestMapping("/todosTitulos")
public List<Titulo> getTodosTitulos() {		
	List<Titulo> listaTitulos = titulos.findAll();		
	return listaTitulos;
}

}

A

Olá, tente desta forma:

@GetMapping("/testeJson")
public ResponseEntity<JSONObject> testeJson() {
     JSONObject obj = new JSONObject();
     obj.put("name","matheus");
     return ResponseEntity.ok().body(obj);
}
D

Está com pressa? Sugiro publicar e pagar o experts exchange.
É um fórum pago onde você posta suas dúvidas e alguém, que ganha para isso, responde rápido.

Leia as regras do fórum e estude.

F

Me falaram que usar @CrossOrigin desse jeito é gambiarra, uma vez que um CORS bem configurado não é pra apresentar problemas com isso. Mas foi só o que me falaram.

D

O problema é que tem milhares de tutoriais sobre como configurar o filtro cors, mas, 95% não funcionam. Acredite, eu já tive vários problemas com isso e, como eram coisas pontuais, resolvi com esse procedimento técnico não homologado, vulgo gambiarra.

F

Sem dúvida. Eu já tentei uma porrada de jeitos de configurar, e até certo ponto fica maravilhoso! Aí eu crio um novo endpoint e acaba com tudo

Criado 16 de abril de 2018
Ultima resposta 3 de jan. de 2020
Respostas 8
Participantes 5