.NET

Conversão de XML para JSON no C# usando Json.NET

Conversão de dados XML em JSON que podem ser carregados no Couchbase Server pode ser realizado com um pouco de .NET. Dependendo da fonte dos dados, você poderá usar uma ferramenta como Talend. Mas você também pode querer escrever um aplicativo C# .NET simples com Json.NET da Newtonsoft para fazer isso. Neste artigo, mostrarei a você como converter XML em JSON no C# usando o Json.NET.

10 Common NoSQL Use Cases for Modern ApplicationsNão está usando o Couchbase Server? Não tem problema, este é um exemplo bastante genérico. Mas considere as vantagens de ter um banco de dados com todos os recursos usando JSON no centro da sua solução; indexação, consulta, pesquisa, análise e suporte móvel são todos integrados e acessíveis com um SDK DO .NET. Veja mais vantagens em nosso whitepaper técnico ou download do Couchbase e acompanhe esta postagem.

Dados XML

Para os fins deste tutorial, usarei um exemplo de XML muito simples. Se seu XML for mais complexo (vários atributos, por exemplo), sua abordagem também terá de ser mais complexa. (O Json.NET pode lidar com todas as conversões de XML para Json, mas ele segue um conjunto específico de regras de conversão). Aqui está um exemplo de dados:

Observe que eu tenho esse XML como uma string codificada no C#. Em uma situação real, você provavelmente estaria extraindo XML de um banco de dados, de uma API REST, de arquivos XML etc.

Quando você tiver o XML bruto, poderá criar um XmlDocument objeto (XmlDocument vive no System.Xml namespace).

Conversão com Json.NET

Quando você tiver um XmlDocument você pode usar o Json.NET para converter esse objeto em uma representação Json.

Neste exemplo, estou pedindo ao Json.NET para serializar um nó XML:

  • Eu usei Formatação.Nenhum. Se eu quisesse exibir o Json real, talvez fosse melhor usar Formatação.Indentado
  • O último verdadeiro especifica que eu quero omitir o objeto raiz. No XML acima, você pode pensar em <Invoice></Invoice> como o objeto raiz. Eu só quero os valores do objeto Invoice. Se eu não omitisse o nó raiz, o Json resultante teria a seguinte aparência: {"Invoice":{"Timestamp":"1/1/2017 00:01","CustNumber":"12345","AcctNumber":"54321"}}

Salvando o resultado Json

Por fim, vamos colocar o Json no Couchbase. A maneira mais fácil de fazer isso seria chamar novamente o JsonConvert para desserializar o Json em um C# objeto. Esse objeto seria então usado com a função bucket.Insert(...) método.

Com esse método, o Json seria armazenado no Couchbase da seguinte forma:

XML serialized to object

Isso pode ser bom, mas muitas vezes você vai querer ter mais controle sobre o formato. Com o Json.NET, podemos serializar para uma determinada classe, em vez de apenas objeto. Vamos criar um Fatura classe assim:

Observe que agora há algumas informações de tipo. O Timestamp é um DateTime e o AcctNumber é um int. A conversão ainda funcionará, mas o resultado será diferente, de acordo com Regras de conversão do Json.NET. (Confira também o Documentação completa do Json.NET se você ainda não estiver familiarizado com ele).

O resultado dessa inserção terá a seguinte aparência:

XML serialized to new class object

  • Observe que o campo de registro de data e hora é diferente: ele é armazenado de uma forma mais padronizada.
  • O valor do campo acctNumber não está entre aspas, o que indica que está sendo armazenado como um número.
  • Por fim, observe que os nomes dos campos são diferentes. Isso se deve à maneira como o Json.NET nomeia os campos Json por padrão. Você pode especificar nomes diferentes usando o parâmetro JsonProperty atributo.

É isso aí

Mais um pequeno detalhe a ser destacado: Eu usei Guid.NewGuid().ToString() para criar chaves arbitrárias para os documentos. Se você tiver valor(es) nos dados XML que deseja usar como chave, poderá/deverá usar esse(s) valor(es).

Esta publicação do blog foi inspirada em uma conversa por e-mail com um usuário do Couchbase. Se você tiver alguma sugestão de ferramentas, dicas ou truques para facilitar o processo de conversão de XML para JSON, entre em contato comigo. Ou entre em contato comigo se houver algo sobre o qual gostaria de ver meu blog! Você pode enviar-me um e-mail ou entre em contato comigo @mgroves no Twitter.

Continue aprendendo

 

 

 

Compartilhe este artigo
Receba atualizações do blog do Couchbase em sua caixa de entrada
Esse campo é obrigatório.

Autor

Postado por Matthew Groves

Matthew D. Groves é um cara que adora programar. Não importa se é C#, jQuery ou PHP: ele enviará solicitações de pull para qualquer coisa. Ele tem programado profissionalmente desde que escreveu um aplicativo de ponto de venda QuickBASIC para a pizzaria de seus pais nos anos 90. Atualmente, ele trabalha como gerente sênior de marketing de produtos da Couchbase. Seu tempo livre é passado com a família, assistindo aos Reds e participando da comunidade de desenvolvedores. Ele é autor de AOP in .NET, Pro Microservices in .NET, autor da Pluralsight e Microsoft MVP.

Deixe um comentário

Pronto para começar a usar o Couchbase Capella?

Iniciar a construção

Confira nosso portal do desenvolvedor para explorar o NoSQL, procurar recursos e começar a usar os tutoriais.

Use o Capella gratuitamente

Comece a trabalhar com o Couchbase em apenas alguns cliques. O Capella DBaaS é a maneira mais fácil e rápida de começar.

Entre em contato

Deseja saber mais sobre as ofertas do Couchbase? Deixe-nos ajudar.