Deserializeobject Json

Asked

Viewed 86 times

0

Good morning, I’m trying to deserialize a JSON but there’s no way I can, I get the following JSON from another system:

{"retorno":{"contatos":[{"contato":{"id":"1","codigo":"","nome":"Client1","fantasia":null,"tipo":"F","cnpj":"11111111111","ie_rg":"","endereco":"Rua","numero":"153","bairro":"Parque","cep":"12345678","cidade":"S\u00e3o Paulo","complemento":"Casa","uf":"SP","fone":"(11) 1111-1111","email":"[email protected]","situacao":"A","contribuinte":"9","site":null,"celular":"(11) 11111-1111","dataAlteracao":"2019-07-10 10:34:21","dataInclusao":"2019-07-10 10:34:21","limiteCredito":"0.00","dataNascimento":"1967-06-28"}},{"contato":{"id":"1","codigo":"","nome":"Client2","fantasia":null,"tipo":"F","cnpj":"11111111111","ie_rg":"","endereco":"Rua","numero":"153","bairro":"Parque","cep":"12345678","cidade":"S\u00e3o Paulo","complemento":"Casa","uf":"SP","fone":"(11) 1111-1111","email":"[email protected]","situacao":"A","contribuinte":"9","site":null,"celular":"(11) 11111-1111","dataAlteracao":"2019-07-10 10:34:21","dataInclusao":"2019-07-10 10:34:21","limiteCredito":"0.00","dataNascimento":"1967-06-28"}},{"contato":{"id":"1","codigo":"","nome":"Client3","fantasia":null,"tipo":"F","cnpj":"11111111111","ie_rg":"","endereco":"Rua","numero":"153","bairro":"Parque","cep":"12345678","cidade":"S\u00e3o Paulo","complemento":"Casa","uf":"SP","fone":"(11) 1111-1111","email":"[email protected]","situacao":"A","contribuinte":"9","site":null,"celular":"(11) 11111-1111","dataAlteracao":"2019-07-10 10:34:21","dataInclusao":"2019-07-10 10:34:21","limiteCredito":"0.00","dataNascimento":"1967-06-28"}}]}}

My classes are:

public class Contato
{
        public string id { get; set; }
        public string codigo { get; set; }
        public string nome { get; set; }
        public string fantasia { get; set; }
        public string tipo { get; set; }
        public string cnpj { get; set; }
        public string ie_rg { get; set; }
        public string endereco { get; set; }
        public string numero { get; set; }
        public string bairro { get; set; }
        public string cep { get; set; }
        public string cidade { get; set; }
        public string complemento { get; set; }
        public string uf { get; set; }
        public string fone { get; set; }
        public string email { get; set; }
        public string situacao { get; set; }
        public string contribuinte { get; set; }
        public string site { get; set; }
        public string celular { get; set; }
        public string dataAlteracao { get; set; }
        public string dataInclusao { get; set; }
        public string limiteCredito { get; set; }
        public string dataNascimento { get; set; }
}
    
    public class Contatos
    {
        public List<Contato> contato { get; set; }
    }

And my code is:

var test = JsonConvert.DeserializeObject<Contatos>("aqui vai o json string");

When I run the test variable comes null or without item algums, where I am missing?

  • You must be feeling bad about json. Make sure you’re not including feedback.

3 answers

2


Try this, because the Json object does not match the structure you created:

        var test = JsonConvert.DeserializeObject<Retorno>(jsonText);

with the classes below worked



        public partial class Retorno
        {
            [JsonProperty("retorno")]
            public RetornoClass RetornoRetorno { get; set; }
        }

        public partial class RetornoClass
        {
            [JsonProperty("contatos")]
            public ContatoElement[] Contatos { get; set; }
        }

        public partial class ContatoElement
        {
            [JsonProperty("contato")]
            public ContatoContato Contato { get; set; }
        }

        public partial class ContatoContato
        {
            [JsonProperty("id")]
            public long Id { get; set; }

            [JsonProperty("codigo")]
            public string Codigo { get; set; }

            [JsonProperty("nome")]
            public string Nome { get; set; }

            [JsonProperty("fantasia")]
            public object Fantasia { get; set; }

            [JsonProperty("tipo")]
            public string Tipo { get; set; }

            [JsonProperty("cnpj")]
            public string Cnpj { get; set; }

            [JsonProperty("ie_rg")]
            public string IeRg { get; set; }

            [JsonProperty("endereco")]
            public string Endereco { get; set; }

            [JsonProperty("numero")]
            public long Numero { get; set; }

            [JsonProperty("bairro")]
            public string Bairro { get; set; }

            [JsonProperty("cep")]
            public long Cep { get; set; }

            [JsonProperty("cidade")]
            public string Cidade { get; set; }

            [JsonProperty("complemento")]
            public string Complemento { get; set; }

            [JsonProperty("uf")]
            public string Uf { get; set; }

            [JsonProperty("fone")]
            public string Fone { get; set; }

            [JsonProperty("email")]
            public string Email { get; set; }

            [JsonProperty("situacao")]
            public string Situacao { get; set; }

            [JsonProperty("contribuinte")]
            public long Contribuinte { get; set; }

            [JsonProperty("site")]
            public object Site { get; set; }

            [JsonProperty("celular")]
            public string Celular { get; set; }

            [JsonProperty("dataAlteracao")]
            public DateTimeOffset DataAlteracao { get; set; }

            [JsonProperty("dataInclusao")]
            public DateTimeOffset DataInclusao { get; set; }

            [JsonProperty("limiteCredito")]
            public string LimiteCredito { get; set; }

            [JsonProperty("dataNascimento")]
            public DateTimeOffset DataNascimento { get; set; }
        }

1

Another example using a json in a directory

var diretorioJson = "@C:/JsonApi";
 if (!Directory.Exists(diretorioJson))
     Directory.CreateDirectory(diretorioJson);

                var arquivos = Directory.GetFiles(diretorioJson);
                var arquivoJson = string.Empty;

                if (arquivos.Length == 0)
                {
                    Log.ErrorFormat("O diretório {0} não possui arquivos para processar.", diretorioJson);
                    return obj; 
                }

                foreach(var item in arquivos)
                {
                    arquivoJson = item;
                }

                using (StreamReader reader = File.OpenText(arquivoJson))
                {
                    string json = reader.ReadToEnd();

                    response = JsonConvert.DeserializeObject<Classe>(json);                   
                }

0

Hello,

Your formatted json:

{
   "retorno":{
      "contatos":[
         {
            "contato":{
               "id":"1",
               "codigo":"",
               "nome":"Client1",
               "fantasia":null,
               "tipo":"F",
               "cnpj":"11111111111",
               "ie_rg":"",
               "endereco":"Rua",
               "numero":"153",
               "bairro":"Parque",
               "cep":"12345678",
               "cidade":"S\u00e3o Paulo",
               "complemento":"Casa",
               "uf":"SP",
               "fone":"(11) 1111-1111",
               "email":"[email protected]",
               "situacao":"A",
               "contribuinte":"9",
               "site":null,
               "celular":"(11) 11111-1111",
               "dataAlteracao":"2019-07-10 10:34:21",
               "dataInclusao":"2019-07-10 10:34:21",
               "limiteCredito":"0.00",
               "dataNascimento":"1967-06-28"
            }
         },
         {
            "contato":{
               "id":"1",
               "codigo":"",
               "nome":"Client2",
               "fantasia":null,
               "tipo":"F",
               "cnpj":"11111111111",
               "ie_rg":"",
               "endereco":"Rua",
               "numero":"153",
               "bairro":"Parque",
               "cep":"12345678",
               "cidade":"S\u00e3o Paulo",
               "complemento":"Casa",
               "uf":"SP",
               "fone":"(11) 1111-1111",
               "email":"[email protected]",
               "situacao":"A",
               "contribuinte":"9",
               "site":null,
               "celular":"(11) 11111-1111",
               "dataAlteracao":"2019-07-10 10:34:21",
               "dataInclusao":"2019-07-10 10:34:21",
               "limiteCredito":"0.00",
               "dataNascimento":"1967-06-28"
            }
         },
         {
            "contato":{
               "id":"1",
               "codigo":"",
               "nome":"Client3",
               "fantasia":null,
               "tipo":"F",
               "cnpj":"11111111111",
               "ie_rg":"",
               "endereco":"Rua",
               "numero":"153",
               "bairro":"Parque",
               "cep":"12345678",
               "cidade":"S\u00e3o Paulo",
               "complemento":"Casa",
               "uf":"SP",
               "fone":"(11) 1111-1111",
               "email":"[email protected]",
               "situacao":"A",
               "contribuinte":"9",
               "site":null,
               "celular":"(11) 11111-1111",
               "dataAlteracao":"2019-07-10 10:34:21",
               "dataInclusao":"2019-07-10 10:34:21",
               "limiteCredito":"0.00",
               "dataNascimento":"1967-06-28"
            }
         }
      ]
   }
}

Class in json template to deserialize:

public class Contato
    {
        public string id { get; set; }
        public string codigo { get; set; }
        public string nome { get; set; }
        public object fantasia { get; set; }
        public string tipo { get; set; }
        public string cnpj { get; set; }
        public string ie_rg { get; set; }
        public string endereco { get; set; }
        public string numero { get; set; }
        public string bairro { get; set; }
        public string cep { get; set; }
        public string cidade { get; set; }
        public string complemento { get; set; }
        public string uf { get; set; }
        public string fone { get; set; }
        public string email { get; set; }
        public string situacao { get; set; }
        public string contribuinte { get; set; }
        public object site { get; set; }
        public string celular { get; set; }
        public string dataAlteracao { get; set; }
        public string dataInclusao { get; set; }
        public string limiteCredito { get; set; }
        public string dataNascimento { get; set; }
    }

    public class Contato
    {
        public Contato contato { get; set; }
    }

    public class Retorno
    {
        public IList<Contato> contatos { get; set; }
    }

    public class Example
    {
        public Retorno retorno { get; set; }
    }

Always try to use the https://jsonformatter.curiousconcept.com/ to validate your json and copy it formatted to then use https://www.jsonutils.com/ to create the class in the json template;

After and only :

Example o = JsonConvert.DeserializeObject<Example>(seujson);
var x = o.nome da propriedade...

I hope I’ve helped.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.