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

deserialização utilizando uma reposta de uma api

baseando- se nesse código o que eu teria que modificar para desirializar esse json vindo de uma api(URL) fornecida externamente

4 respostas

Oi Douglas, tudo bem?

Você teria que usar uma classe para desserializar o resultado - assim como fizemos com a classe LojaDeFimes. Normalmente fazemos isso investigando o conteúdo JSON fornecido pelo serviço da API e criando uma classe com a mesma estrutura. E então fazemos a desserialização. Existem ferramentas online que permitem criar esse tipo de classe rapidamente a partir do JSON, como por exemplo: http://json2csharp.com/

bacana eu entendi o conceito, um coisa que não devo ter me expressado muito bem seria como eu pegaria esse json disponibilizado por uma api ao inves de um arquivo a ideia e rodar ele e armazenar esse dados no meu sistema

solução!

Você pode usar o método DeserializeObject da biblioteca Newtonsoft.Json:

using Newtonsoft.Json;
.
.
.
            var json = await [chamada da api]
            var objetos = JsonConvert.DeserializeObject<List<MinhaClasse>>(json);

Como não sei exatamente como é a chamada que você está fazendo, você pode adaptar o código acima para atender sua necessidade.

eu consegui criar um rotina que pega o arquivo json de um servidor web em um objeto, eu armazeno em um arquivo string[] e depois chamo esse metodos

bool DescribeKeyValue(object item, ref string[] values)
        {
            bool funcionou =  false;
            string StringJson = string.Empty;
            string StringJsonAluno = string.Empty;
            string StringJsonBoletim = string.Empty;
            Aluno oAluno = new Aluno();
            List <Aluno>listaAluno = new List<Aluno>();
            Boletim oBoletim = new Boletim();
            List<Boletim> listaBoletim = new List<Boletim>();

            var teste = string.Empty;
            try
            {
                if (item != null)
                {
                    // a minha estrutura basica do json é dessa forma [aluno,turma,curso,boletim[nota_prova,nota,trabalho,.....]]
                    StringJson = item.ToString();
                    StringJsonAluno = StringJson.Substring(0,StringJson.IndexOf("[") +1);
                    StringJsonBoletim = StringJson.Substring(StringJson.IndexOf("["), ((StringJson.IndexOf("]")) - (StringJson.IndexOf("[")) +1));
                    StringJsonBoletim = StringJsonBoletim.Replace("nota_","");

                    values = item.ToString().Replace("{", "").Replace("}", "").Replace("nota_", "").Replace(":", "=").Split(':');

                    foreach (var i in listaAluno)   
                    {
                        oAluno.ra = i.ra;
                        oAluno.turma = i.turma;
                        oAluno.curso = i.curso;
                        oAluno.boletim = ConverteJSonParaObject<List<Boletim>>(StringJsonBoletim);// mando ele para essa classe onde ele vai pegar o meu arquivo e converter ele em um objeto
                        MontarInsert(oAluno);
                    }
                    return true;
                }
            }
            catch
            {
                return false;
            }
        }

        public T ConverteJSonParaObject<T>(string jsonString)
        {
            try
            {
                DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));
                MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
                T obj = (T)serializer.ReadObject(ms);
                return obj;
            }
            catch
            {
                throw;
            }
        }