Conversión de datos XML a JSON que se pueden cargar en Couchbase Server se puede lograr con un poco de .NET. Dependiendo de la fuente de los datos, puede utilizar una herramienta como Talend. Pero también es posible que desee escribir una sencilla aplicación C# .NET con Json.NET de Newtonsoft para hacerlo. En este artículo, voy a mostrarte cómo convertir XML a JSON en C# utilizando Json.NET.

10 Common NoSQL Use Cases for Modern Applications¿No usas Couchbase Server? No hay problema, este es un ejemplo bastante genérico. Pero considere las ventajas de tener una base de datos con todas las funciones utilizando JSON en el centro de su solución; indexación, consulta, búsqueda, análisis, soporte móvil son todos incorporados y accesibles con un SDK .NET. Ver más ventajas en nuestro informe técnico o descargar Couchbase y sigue este post.

Datos XML

Para los fines de este tutorial, voy a utilizar un ejemplo XML muy sencillo. Si su XML es más complejo (múltiples atributos, por ejemplo), entonces su enfoque también tendrá que ser más complejo. (Json.NET puede manejar todas las conversiones de XML a Json, pero sigue un conjunto específico de normas de conversión). He aquí un ejemplo de datos:

Fíjate en que tengo este XML como una cadena codificada en C#. En una situación de la vida real, probablemente estarías extrayendo XML de una base de datos, una API REST, archivos XML, etc.

Una vez que tenga el XML sin procesar, puede crear un archivo XmlDocument objeto (XmlDocument vive en el Sistema.Xml espacio de nombres).

Conversión con Json.NET

Una vez que tenga un XmlDocument puede utilizar Json.NET para convertir ese objeto en una representación Json.

En este ejemplo, le estoy pidiendo a Json.NET que serialice un nodo XML:

  • Utilicé Formato.Ninguno. Si quisiera mostrar el Json real, sería mejor utilizar Formato.sangría
  • El último verdadero especifica que quiero omitir el objeto raíz. En el XML anterior, se puede pensar en <Invoice></Invoice> como objeto raíz. Sólo quiero los valores del objeto Factura. Si no omitiera el nodo raíz, el Json resultante tendría el siguiente aspecto: {"Invoice":{"Timestamp":"1/1/2017 00:01","CustNumber":"12345","AcctNumber":"54321"}}

Guardar el resultado Json

Finalmente, pongamos el Json en Couchbase. La forma más sencilla de hacerlo sería llamar de nuevo a JsonConvert para deserializar el Json en un C# objeto. Ese objeto se utilizaría entonces con Couchbase's cubo.Insertar(...) método.

Con este método, el Json se almacenaría en Couchbase así:

XML serialized to object

Eso podría estar bien, pero a menudo vas a querer más control del formato. Con Json.NET, podemos serializar a una clase determinada, en lugar de simplemente objeto. Vamos a crear un Factura clase así:

Observe que ahora hay información de tipo. El Timestamp es un FechaHora y el AcctNumber es un int. La conversión seguirá funcionando, pero el resultado será diferente, según Reglas de conversión de Json.NET. (Consulte también el Documentación completa de Json.NET si aún no lo conoce).

El resultado de esa inserción tendrá el siguiente aspecto:

XML serialized to new class object

  • Observe que el campo de fecha y hora es diferente: se almacena de una forma más estandarizada.
  • El valor del campo acctNumber no está entre comillas, lo que indica que se está almacenando como un número.
  • Por último, observe que los nombres de los campos son diferentes. Esto se debe a la forma en que Json.NET nombra los campos Json por defecto. Puede especificar nombres diferentes utilizando el parámetro JsonProperty atributo.

Ya está.

Una cosa más de menor importancia a señalar: He utilizado Guid.NewGuid().ToString() para crear claves arbitrarias para los documentos. Si dispone de valor(es) en los datos XML que desea utilizar para una clave, podría/debería utilizar esos valor(es) en su lugar.

Esta entrada del blog se inspiró en una conversación por correo electrónico con un usuario de Couchbase. Si tienes alguna sugerencia sobre herramientas, consejos o trucos para facilitar el proceso de conversión de XML a JSON, házmelo saber. O ponte en contacto conmigo si hay algo sobre lo que te gustaría que escribiera en el blog. Puedes envíame un correo electrónico o ponte en contacto conmigo @mgroves en Twitter.

Sigue aprendiendo

 

 

 

Autor

Publicado por Matthew Groves

A Matthew D. Groves le encanta programar. No importa si se trata de C#, jQuery o PHP: enviará pull requests para cualquier cosa. Lleva codificando profesionalmente desde que escribió una aplicación de punto de venta en QuickBASIC para la pizzería de sus padres, allá por los años noventa. Actualmente trabaja como Director de Marketing de Producto para Couchbase. Su tiempo libre lo pasa con su familia, viendo a los Reds y participando en la comunidad de desarrolladores. Es autor de AOP in .NET, Pro Microservices in .NET, autor de Pluralsight y MVP de Microsoft.

Dejar una respuesta