|
|
|
|
|
- Propiedades específicas de la descripción de variables de tipo JSONXMLConverter
- Estándar de conversión de JSON a XML y de XML a JSON
- Estándar de conversión predeterminado
- Casos especiales de conversión
- Funciones WLanguage que utilizan el tipo JSONXMLConverter
JSONXMLConverter (Tipo de variable)
El tipo JSONXMLConverter permite definir las características avanzadas de la conversión de un objeto XML a JSON (o a la inversa) mediante las funciones XMLToJSON y JSONToXML). Las características de esta conversión se pueden definir y cambiar mediante diferentes propiedades WLanguage. Observación: Para obtener más información sobre la declaración de este tipo de variable y el uso de propiedades WLanguage, consulte Declarar una variable. let json = StringToJSON(" {"name": "TestName" ,"id": 2 ,"true": true ,"list": [5,5,6,2,47] } ") let converter is JSONXMLConverter converter.ArrayConversionWithRoot = False converter.FullConversion = True let xml = JSONToXML(json, converter) Trace(xml..XMLSource) // The result will be // <document> // <name>TestName</name> // <id>2</id> // <true>true</true> // <list>5</list> // <list>5</list> // <list>6</list> // <list>2</list> // <list>47</list> // </document> Trace(XMLToJSON(xml, converter)) // the result will be: // { "name":"TestName", "id":2, "true":true, "list":[ 5, 5, 6, 2, 47 ] }
Observaciones Propiedades específicas de la descripción de variables de tipo JSONXMLConverter Las siguientes propiedades pueden utilizarse para manipular un convertidor: | | | Nombre de la propiedad | Tipo utilizado | Efecto |
---|
ArrayConversionWithRoot | Boolean | - True (valor predeterminado) para convertir arrays JSON a XML utilizando el nombre del elemento JSON como nombre de raíz,
- False en caso contrario.
| ElementName | Character string | Nombres de elementos para arrays con raíz. | EmptyTagRepresentation | Boolean | - True (valor predeterminado) si la etiqueta vacía está representada por NULL,
- False en caso contrario.
| FullConversion | Boolean | - True (predeterminado) si la conversión debe incluir atributos y espacios de nombres,
- False para realizar una conversión simple (ignorando atributos y espacios de nombres).
| JSONTyping | Boolean | - True (valor predeterminado) si se deducen los tipos durante la conversión a JSON,
- False en caso contrario.
| PrefixAttribute | Character string | Prefijo de los atributos XML en JSON. De forma predeterminada, esta propiedad se establece en "@". | PrefixCDATA | Character string | Clave de secciones de escape XML. De forma predeterminada, esta propiedad se establece en "CDATA". | PrefixNamespaceDeclared | Character string | Prefijo para los espacios de nombres declarados. De forma predeterminada, esta propiedad se establece en "%". | PrefixNamespaceNode | Character string | Prefijo para el espacio de nombres del nodo. De forma predeterminada, esta propiedad se establece en "$". | PrefixText | Character string | Prefijo del texto de los nodos de texto XML en JSON. De forma predeterminada, esta propiedad se establece en "#text". | XMLRootName | Character string | Nombre de la raíz XML. De forma predeterminada, esta propiedad se establece en "root". |
Observaciones Estándar de conversión de JSON a XML y de XML a JSON No hay estándares específicos para ninguno de los dos tipos de conversión. Sin embargo, existen dos métodos para definir las operaciones de conversión: - Forzar un estándar durante la conversión (utilizando los valores predeterminados de la variable JSONXMLConverter).
- Utilizar un estándar de conversión personalizado con una variable de tipo JSONXMLConverter para describir las reglas de conversión.
Estándar de conversión predeterminado XML a JSON - Etiqueta XML: "" + nombre de la etiqueta seguido de un objeto JSON.
- Etiqueta vacía: valor JSON nulo.
- Atributo XML: "@" + nombre del atributo como miembro JSON del objeto que representa la etiqueta.
- Nodo de texto: pares clave/valor simple si no hay atributos, "#text" si el nodo es un objeto JSON.
- Secciones de escape: "CDATA" con la cadena como valor JSON.
JSON a XML - Objeto vacío: etiqueta vacía si el objeto tiene nombre.
- Lista vacía: etiqueta vacía si el array tiene nombre.
- Valor: nodo de texto.
Casos especiales de conversión La conversión JSON - XML no es una conversión común y sin pérdidas, ya que los dos lenguajes tienen sintaxis y datos diferentes. Cualquier conversión requerirá múltiples adaptaciones para mantener los datos y limitar las pérdidas del documento original. A continuación, encontrará una lista de los distintos puntos de conflictos y ambigüedades que pueden producirse durante una conversión, así como las soluciones sugeridas que permiten una conversión inversa (si es posible) sin comprometer los datos del objeto. XML a JSON - Atributo XML: La sintaxis JSON no tiene atributos para los pares clave-valor. Para mantener la noción de atributos, una solución consiste en anteponerlos en el contenido JSON y colocarlos como miembros del objeto.
- Namespace: La sintaxis JSON no tiene espacios de nombres para las claves. Una solución sencilla es interpretarlos como nombres y atributos estándar.
- Etiqueta vacía: La sintaxis JSON no permite claves sin valor. Hay dos posibilidades: representarlas con el valor Null o un objeto vacío (en el caso de una etiqueta vacía con atributos, la única representación posible es el objeto pseudo-vacío, que solo contiene los atributos de la etiqueta).
- Nodo de texto: Los nodos de texto pueden representarse como un par clave-valor, pero si hay atributos, pueden transformarse en un objeto con el valor de la clave que representa el nodo. Para mantener una referencia al valor textual del nodo, una solución consiste en crear un par interno que contenga el texto del nodo.
- Lista de nodos: Las listas XML se transponen fácilmente a JSON, pero como no es posible duplicar las claves JSON, el orden de los nodos hijos puede perderse en algunos casos.
- Secciones de escape: En JSON no hay "secciones de escape", pero es posible almacenarlas como campos especiales en el contenido JSON de destino, de forma similar a los nodos de texto.
- Comentarios: En JSON, no hay comentarios. La solución consiste en no copiarlos en el contenido JSON de destino, ya que son opcionales.
JSON a XML - Tipos de valores: Los documentos XML no tienen tipos de datos. Estos tipos se perderán; de lo contrario, los tipos originales deben almacenarse en el documento XML generado.
- Lista vacía: Técnicamente hablando, XML no tiene listas vacías. Considerarlas como etiquetas vacías implica un riesgo de conflicto con objetos vacíos y/o nulos.
- Objeto vacío/nulo: Se puede utilizar una etiqueta XML vacía para representar estos conceptos JSON, pero para permitir la conversión inversa, es necesario elegir una de las dos representaciones.
Funciones WLanguage que utilizan el tipo JSONXMLConverter
Esta página también está disponible para…
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|