5
respostas

Deserialização

Boa noite, estou tentando fazer uma deserialização e não estou conseguindo, a classe sempre continua em branco.

Método:

    async Task<UsuarioApp> BuscaUsuarioAsync()
        {
            UsuarioApp usuarioApp = new UsuarioApp();
            HttpClient cliente = new HttpClient();
            string url = "http://localhost:8080/app/rest/usuarioapp/";
            var resultado = await cliente.GetStringAsync(url);
            usuarioApp = JsonConvert.DeserializeObject<UsuarioApp>(resultado);
            Debug.WriteLine("buscou" + usuarioApp.nome);
            Debug.WriteLine(resultado);

            return usuarioApp;
        }

Classe UsuarioApp:

 public class UsuarioApp
    {
        public int id { get; set; }
        public string nome { get; set; }
        public string nomeMae { get; set; }
        public string nomePai { get; set; }
        public string dataNascimento { get; set; }
        public string cpf { get; set; }
        public string rg { get; set; }
        public string idade { get; set; }
        public string endereco { get; set; }
        public string numero { get; set; }
        public string complemento { get; set; }
        public string cep { get; set; }
        public string bairro { get; set; }
        public string cidade { get; set; }
        public string estado { get; set; }
    }

Json que a URL retorna:

{
    "bairro": "JORDOA",
    "cep": "65065-545",
    "cidade": "São Luís",
    "complemento": "",
    "cpf": "123.456.789-01",
    "dataNascimento": "2019-04-08",
    "endereco": "AVENIDA CASTELINHO",
    "estado": "Maranhão",
    "id": 16,
    "idade": "25",
    "nome": "ADMINISTRADOR",
    "nomeMae": "SuInf",
    "nomePai": "",
    "numero": "SEM NUMERO",
    "rg": "123456789012345"
}

o VS não me gera nenhuma exception

5 respostas

Oi João Carlos, tudo bem?

Você pode verificar o resultado nesta linha?

return usuarioApp;

Pergunto isso porque no meu teste a desserialização funcionou:

buscouADMINISTRADOR
{
    "bairro": "JORDOA",
    "cep": "65065-545",
    "cidade": "São Luís",
    "complemento": "",
    "cpf": "123.456.789-01",
    "dataNascimento": "2019-04-08",
    "endereco": "AVENIDA CASTELINHO",
    "estado": "Maranhão",
    "id": 16,
    "idade": "25",
    "nome": "ADMINISTRADOR",
    "nomeMae": "SuInf",
    "nomePai": "",
    "numero": "SEM NUMERO",
    "rg": "123456789012345"
}

Você pode ver o meu teste neste link: https://dotnetfiddle.net/0JJxEq

Pode dar uma olhada nisso? Coloque um breakpoint naquela linha que mencionei e veja o resultado da variável usuarioApp. Obrigado!

então com o break point na linha mencionada ele informa que o usuarioApp esta null, tanto com o resultado que meu EndPoint retorna, quanto a string resultado como você colocou no link enviado

Eu sei que você postou o Json que a URL retorna, mas talvez a variável esteja diferente. Então vou pedir para você inspecionar o resultado da variável resultado, tudo bem?

Quando eu inspeciono a variavel resultado ele me retorna a string:

"{\"bairro\":\"JORDOA\",\"cep\":\"65065-545\",
\"cidade\":\"São Luís\",\"complemento\":\"\",
\"cpf\":\"123.456.789-01\",\"dataNascimento\":\"2019-04-08\",
\"endereco\":\"AVENIDA CASTELINHO\",\"estado\":\"Maranhão\",
\"id\":16,\"idade\":\"25\",\"nome\":\"ADMINISTRADOR\",
\"nomeMae\":\"SUPERVISAO DE INFORMATICA\",
\"nomePai\":\"\",\"numero\":\"SEM NUMERO\",
\"rg\":\"123456789012345\"}"

tive que fazer umas quebras de linha para poder caber na tela, porem, quando passa pela linha:

 Debug.WriteLine(resultado);

ele me retorna a string sem os /

Oi João

Para mim continua funcionando. Fiz um teste com o valor da variável resultado que você me passou, e funcionou:

https://dotnetfiddle.net/0JJxEq

Você pode me mandar seu código para o meu email para eu dar uma olhada? marcelo.oliveira@alura.com.br obrigado!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software