baseando- se nesse código o que eu teria que modificar para desirializar esse json vindo de uma api(URL) fornecida externamente
baseando- se nesse código o que eu teria que modificar para desirializar esse json vindo de uma api(URL) fornecida externamente
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
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;
}
}