Convertir instancia XML en instancia JSON y viceversa

www.altova.com Imprimir este apartado Página anterior Subir un nivel Página siguiente

Inicio >  Guía y referencia del usuario > Comandos de menú > Menú Conversión >

Convertir instancia XML en instancia JSON y viceversa

Si el documento activo es un documento XML, este comando genera un documento JSON a partir del documento activo. Si, por el contrario, el documento activo es un archivo JSON, este comando genera un documento XML a partir del documento activo. El documento resultante se abre inmediatamente en una ventana nueva y puede guardarse en cualquier ubicación del sistema de archivos.

 

Más abajo describimos las opciones de conversión. Además, puede encontrar más información sobre las funciones de edición de datos JSON en la sección JSON y esquemas JSON.

 

Ejemplos de conversión

A continuación puede ver un documento XML de partida y el documento JSON de salida que se obtiene con el comando Convertir instancia XML en instancia JSON y viceversa.

 

Documento XML (documento de partida)

 

<?xml version="1.0" encoding="UTF-8"?>

<Person first="Jim" last="James">

  <Address>

    <street>4 New Street</street>

    <city>New York</city>

    <state>NY</state>

    <code>10123</code>

  </Address>

  <Tel type="home">

      123 123-1234

  </Tel>

  <Tel type="office">

      123 987-9876

  </Tel>

</Person>

 

Documento JSON (documento de salida)

 

{

 "XML": {

         "version": 1.0, 

         "encoding": "UTF-8"

 }, 

 "Person": {

         "first": "Jim", 

         "last": "James", 

         "Address": {

                 "street": "4 New Street", 

                 "city": "New York", 

                 "state": "NY", 

                 "code": 10123

         }, 

         "Tel": [ { "type": "home", 

                 "Text": "\r      123 123-1234\r  "}, { "type": "office", 

                 "Text": "\r      123 987-9876\r  "} ]

 }

}

 

Para convertir un documento JSON en XML, el documento JSON debe estar activo en la vista antes de que se ejecute el comando Convertir instancia XML en instancia JSON y viceversa.

 

Opciones de conversión de datos XML en JSON

Cuando se invoca el comando Convertir instancia XML en instancia JSON y viceversa para convertir un documento XML en un documento JSON, aparece el cuadro de diálogo "Convertir XML en JSON" (imagen siguiente). Puede seleccionar si el destino de la conversión es el formato JSON o JSON5. Después configure las opciones de conversión y haga clic en Aceptar. XMLSpy generará un documento de instancia JSON a partir de la instancia XML que se abrirá inmediatamente en una ventana nueva.

JSONConvertXMLInstance2JSON

Con la dos primeras opciones puede indicar si se añaden prefijos o no a los nombres de propiedad JSON para evitar conflictos con elementos que estén en el mismo nivel. Esto puede verse bien en el ejemplo de código que aparece a continuación. Observe que el atributo XML somenode se convirtió en la propiedad JSON @somenode. Gracias al prefijo @ se evita un conflicto con la propiedad JSON somenode (generada a partir del elemento XML somenode).

 

Instancia XML

 

<root somenode="value">

    <somenode>content</somenode>

</root>

 

 

Instancia JSON

 

{

    "root": {

        "@somenode": "value",

        "somenode": "content"

    }

}

 

Las demás opciones del cuadro de diálogo sirven para especificar si determinados tipos de nodos XML se convierten o no. Si se convierten, los comentarios XML reciben el nombre "#". Los nodos de  texto (que suelen aparecer dentro de elementos con contenido mixto) reciben el nombre "$". Si un nodo XML tiene un prefijo de espacio de nombres, el nombre JSON correspondiente se creará con este prefijo de espacio de nombres. Si en el mismo nivel hay elementos con nombres idénticos, se considerará que son componentes iguales. Asimismo, los nodos como comentarios, instrucciones de procesamiento y text() situados en el mismo nivel se consideran componentes iguales. Si en el mismo nivel hay componentes iguales, podrá elegir si XMLSpy crea una matriz con ellos o no. Es decir, en el cuadro de diálogo puede indicar si se crea una matriz con todos los componentes iguales, si se crea con los componentes iguales que sean vecinos o si no se crea ninguna matriz.

 

La opción Usar tipo del esquema XML permite hacer conversiones basándose en el tipo del esquema XML del nodo de origen. Por ejemplo, si un nodo está definido como de tipo xs:string, entonces la propiedad destino del objeto JSON será de tipo JSON string y estará entre comillas. Esta opción es útil si, por ejemplo, un número está almacenado como cadena en el nodo XML de origen y la conversión en JSON debe ser fiel en cuanto a los tipos.

 

Opciones de conversión de datos JSON en XML

Cuando se invoca el comando Convertir instancia XML en instancia JSON y viceversa para convertir una instancia JSON en un documento XML, aparece el cuadro de diálogo "Convertir JSON en XML" (imagen siguiente). Configure aquí las opciones de conversión y haga clic en Aceptar. XMLSpy generará un documento de instancia XML a partir de la instancia JSON que se abrirá inmediatamente en una ventana nueva.

JSONConvertJSONInstance2XML

Debe tener en cuenta estos aspectos:

 

Las propiedades de objetos JSON se convierten en elementos XML. Las primeras cuatro opciones de diálogo permiten elegir qué tipo de propiedades se convierten y cuáles no.
Codificar signos de dos puntos en los nombres de propiedad: si marca esta casilla, los dos puntos de los nombres JSON se codifican y no se convierten como dos puntos. Si no marca esta casilla, los dos puntos se dejan como están.
Conservar información sobre tipo de valor JSON: si marca esta casilla, la información de tipo JSON de las propiedades se convierte en un par atributo-valor del elemento correspondiente.
Crear elemento contenedor para cada matriz JSON: en el documento XML de salida el elemento contenedor tendrá el nombre de la matriz JSON. Los elementos de la matriz JSON se convierten en elementos XML dentro de este contenedor y cada uno de los elementos recibe el nombre que se especifique en el cuadro de texto.

 


© 2019 Altova GmbH