Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Receber JSON - Spring MVC

Bom dia, preciso receber um currículo via JSON mas todo tutorial que vejo só me mostra como enviar um JSON. Meu codigo atualmente esta assim: tenho uma classe Curriculo.java com os atributos do curriculo:


@Entity
@Table(name = "BOT_CURRICULO")
public class Curriculo {

    @Id
    @GeneratedValue
    private Integer id;

    private String nome;
    private Date nascimento;
    private String sexo;
    private String email;
    private String instrucao;
    private String nacionalidade;
    private String cpf;
    //Outros atributos, getters e setters...

na minha classe CurriculoController.java tenho um metodo que era pra receber um JSON, mas não sei use está correto e não sei como faço pra poder receber, eu só fui colocando de a cordo com o que entendi nas pesquisas:

@RequestMapping(value = "/curriculo-test", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE, headers = "Accept=*/*")
    public @ResponseBody String teste(@RequestBody String nome, @RequestBody String nascimento,
            @RequestBody String sexo, @RequestBody String email, @RequestBody String instrucao /*Outros atributos do curriculo */) {
        System.out.println(nome);
        System.out.println(nascimento);
        System.out.println(sexo);
        System.out.println(email);
        System.out.println(instrucao);
        //imprimindo restante dos parametros recebidos...

        return "redirect:/curriculo-register.html";
    }

Se alguem puder me ajudar, só preciso receber um JSON nesse metodo e transformar ele no meu objeto Curriculo

3 respostas
solução!

Opa, tudo bem?

Faz assim:

  • adiciona um consumes para json na annotation requestmapping
  • recebe um curriculo direto como parametro.
  • anota o parametro com @RequestBody

Tudo deve funcionar :). Qualquer coisa posta aqui.. Lembra de montar o json obedecendo as propriedades da classe.

Boa tarde Alberto, eu deixei o codigo assim:

@RestController
public class CurriculoController {

//restante do codigo....

@RequestMapping(value = "/curriculo-test", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
    public String teste(@RequestBody Curriculo curriculo) {
        System.out.println(curriculo.getNome());
        System.out.println(curriculo.getCpf());
        System.out.println(curriculo.getEmail());

        return "redirect:/curriculo-register.html";
    }
}

estou usando o Postman pra enviar um json de exemplo pra testes mas ele sempre me retorna um Bad Request. O json que coloquei pra enviar foi esse:

{
    "admissao":"1111-11-11",
    "areaInteresse":"teste",
    "areaInteresseSecundario":"0",
    "atividades":"teste",
    "atuacao":"Teste",
    "bairro":"Setor Teste",
    "celular":"0000000000",
    "cidade":"Teste",
    "conhecimentosInformatica":"Avançado",
    "cpf":"00000000000",
    "ctp":"00000000000",
    "cuidadoFilhos":"Não",
    "deficiencia":"Não",
    "desligamento":"1111-11-11",
    "digitacao":"Boa",
    "email":"teste@exemplo.com",
    "emissao":"1111-11-11",
    "empresa":"Teste",
    "endereco":"Rua teste",
    "estado":"GO",
    "estadoCivil":"Solteiro",
    "estadoEmissaoCTP":"GO",
    "estadoEmissaoRG":"GO",
    "filhos":"Não",
    "id":"1",
    "idadeFilhos":"0",
    "instrucao":"Superior",
    "motivoSaida":"teste",
    "nacionalidade":"Brasileiro",
    "nascimento":"1997-08-01",
    "negociavel":"Sim",
    "nome":"Kaique",
    "pis":"000000000000",
    "pretensaoSalarial":"0000",
    "problemaAmbienteClimatizado":"Não",
    "reservista":"000000000",
    "resumo":"Teste",
    "rg":"0000000",
    "serie":"1",
    "sexo":"M",
    "telefone":"0000000000",
    "tempoExperiencia":"1"
}

acabei de descobrir, era só o formato da data que estava errado, Obrigado :D