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

DÚVIDAS SOBRE O FORMATO DO JSON/XML RETORNADO

Boa Tarde,

Tive um problema na hora de desserializar o objeto json retornado, usando: ".getObject('produto', Produto.class)",

Supondo que o retorno está vindo como:

{"nome":"Uva", "descricao":"Fruta" "imagem" :"Imagem1"}
Método de teste feito:

@Test
public void gravaNoDataBase() {
String URL2 = "/api/produtos/cadastro";
        Produto produto = new Produto("Uva", "Fruta", "Imagem1");

        Jsonpath =
                given()
                    .header("Accept", "application/json")
                    .contentType("application/json")
                    .body(produto)
                .expect()
                    .statusCode(200)
                .post(URL2)
                    .andReturn().jsonPath();

Produto resposta = path.getObject("", Produto.class);        // Esse Object possui os mesmo atributos do JSON retornado

System.out.println(resposta.nome);        // Imprime "Uva"
Mas também vi que na vídeo aula, o objeto retornado vem com o nome da classe ex:

{produto: {"nome":"Uva", "descricao":"Fruta" "imagem":"Imagem1"}}
E assim faria sentido usar no ".getObject('produto', Produto.class)",

O que é preciso para ficar dessa forma?

4 respostas

Bom, na teoria é preciso alguma alteração no código da api. Por outro lado, o jeito mais praticado no mercado é sem essa chave extra :).

Então estaria correto o uso do ".getObject" com o "Produto resposta = path.getObject("", Produto.class); " ?

Se isso quer dizer que o json que está vindo é parecido com esse:

{
  titulo:'...',
  preco:20
}

Acho que sim.

solução!

Sim, o retorno vem da seguinte forma:

{nome:"Uva", descricao:"Fruta", imagem":"Imagem1"}