3
respostas

Formas de deserialize

Boa noite, na aula sobre deserialize em json e xml mostra para usarmos decorate nas classes. Gostaria de saber se não seria mais pratico fazer um foreach em um objeto genérico que será retornado e já ir alimentando a classe de destino? Isso não é uma boa prática ou não foi comentado simplesmente porque é apenas mais uma forma de se fazer?

3 respostas

Olá, Marcio.

O que você quer dizer com foreach em um objeto genérico? Antes de deserealizar o objeto está vazio, você só tem uma string até então, o "conversor" é do tipo genérico e aguarda alguma classe.

Caso não queira criar classes, você pode utilizar a dynamic objetc e ExpandoObject.

Vale lembrar que muitas vezes utilizando serviços de terceiros, os nomes de campos, envio e retorno, pode não ser claro devido a abreviações de campos, falta de padronização, etc. Também decoramos classes por esse motivo.

JsonConvert exige decorate para entender o arquivo a ser trabalhado, algumas formas de serealização/deserealização não exigem o decorate, pelo menos em xml.

Não sei se essas informações respondem sua dúvida, caso não tenha, detalhe mais o que você quis dizer, se possível com um exemplo.

Abraço

Vc inicia uma classe especifica. Então carrega o json em um objeto genérico, dps vc faz um foreach no objeto genérico,dentro do foreach voce vai preenchendo a classe com os dados que obter do objeto genérico. Ou pode criar uma lista de classe preenche a classe e adiciona a lista.

Pelo que entendi, você precisaria utilizar vários ifs ou switch case ou reflection para identificação de campos e preenchimento da maneira correta, teria que fazer isso para todas as classes que deseja preencher desta forma. Acredito ser uma medida "manual" que vai necessitar mais códigos e fugir da boa prática. Você terá que validar se um campo x existe antes de tentar pega-lo, vai utilizar mais recursos (memória e processador, apesar de ser mínima).