Dicas sobre .NET: convertendo JSON para XML (e vice-versa)

NetCoders
netcoders
Published in
3 min readDec 10, 2016
json-xml-00

Figurando entre os padrões mais comuns para o intercâmbio de informações, os formatos XML e JSON constituem presença praticamente certa ao se considerar a comunicação entre diferentes aplicações por meio de Web Services. Tal popularidade se deve, sem sombra de dúvidas, ao suporte que as principais plataformas de desenvolvimento da atualidade oferecem a estas especificações.

Nota-se inclusive que há no mercado uma maior preferência pelo padrão JSON, dada sua simplicidade e o menor volume de dados trafegado ao se escolher esta opção. Apesar de tudo isso, o formato XML continua a ser bastante utilizado em soluções corporativas.

Levando em conta os aspectos mencionados, um tipo de demanda extremamente comum em muitos sistemas consiste na conversão de valores JSON para o equivalente em XML e/ou vice-versa. Dentro da plataforma .NET isto pode ser conseguido sem grandes dificuldades através do uso do package Newtonsoft.Json (a imagem a seguir demostra esta biblioteca sendo adicionada a partir do utilitário NuGet, em um projeto do Visual Studio 2015):

json-xml-01

Na listagem a seguir é possível observar a conversão de uma instância baseada em um tipo anônimo para uma string no formato JSON. O método SerializeObject da classe JsonConvert (namespace Newtonsoft.Json) será invocado, de maneira que se efetue a transformação do objeto associado à variável chamada “data”:

[code language=”csharp”]

var data = new
{
Data = new
{
Dia = 8,
Mes = 4,
Ano = 2016,
RepresentacaoTexto = “2016–04–08”,
Semestre = 1,
Trimestre = 1,
Estacao = “Outono”
}
};

string valorJSON = JsonConvert.SerializeObject(data);


[/code]

Já no próximo trecho de código há uma chamada ao método estático DeserializeXNode de JsonConvert. O resultado desta operação será uma instância do tipo XDocument (namespace System.Xml.Linq), contendo a representação XML do valor JSON informado como parâmetro:

[code language=”csharp”]

XDocument documentoXML =
JsonConvert.DeserializeXNode(valorJSON);


[/code]

O processo inverso foi detalhado na listagem a seguir, com a conversão de dados no formato XML para o valor correspondente no padrão JSON. Para isto foi acionado o método SerializeXNode da classe JsonConvert, repassando como parâmetro ao mesmo a instância do tipo XDocument gerada anteriormente:

[code language=”csharp”]

string valorFinal = JsonConvert.SerializeXNode(documentoXML);


[/code]

As diversas operações apresentadas neste artigo estão agrupadas na próxima listagem:

[code language=”csharp”]
using System;
using System.Xml.Linq;
using Newtonsoft.Json;

namespace TesteConversaoJSON_Xml
{
class Program
{
static void Main(string[] args)
{
var data = new
{
Data = new
{
Dia = 8,
Mes = 4,
Ano = 2016,
RepresentacaoTexto = “2016–04–08”,
Semestre = 1,
Trimestre = 1,
Estacao = “Outono”
}
};

string valorJSON = JsonConvert.SerializeObject(data);
Console.WriteLine($”Valor no formato JSON: {valorJSON}”);

XDocument documentoXML =
JsonConvert.DeserializeXNode(valorJSON);
Console.WriteLine(“\nValor convertido para XML:”);
Console.WriteLine(documentoXML.ToString());

string valorFinal = JsonConvert.SerializeXNode(documentoXML);
Console.WriteLine($”\nConvertendo de XML para JSON: {valorJSON}”);

Console.ReadKey();
}
}
}
[/code]

O resultado da execução de tais instruções pode ser visualizado na imagem a seguir:

json-xml-02

E assim concluo este post, lembrando que informações adicionais sobre a biblioteca Newtonsoft.Json podem ser encontradas na seção de Referências.

Espero que este conteúdo tenha sido útil.

Até uma próxima oportunidade!

Referências

Converting between JSON and XML
http://www.newtonsoft.com/json/help/html/convertingjsonandxml.htm

JsonConvert Class
http://www.newtonsoft.com/json/help/html/t_newtonsoft_json_jsonconvert.htm

--

--