AYUDA EN LÍNEA
 WINDEVWEBDEV Y WINDEV MOBILE

Ayuda / WLanguage / Funciones WLanguage / Funciones estándar / Funciones de archivos XML
  • 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
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadIOS WidgetApple WatchMac CatalystUniversal Windows 10 App
Otros
Procedimientos almacenados
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.
Ejemplo
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 propiedadTipo utilizadoEfecto
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 stringNombres 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 stringPrefijo de los atributos XML en JSON. De forma predeterminada, esta propiedad se establece en "@".
PrefixCDATA Character stringClave de secciones de escape XML. De forma predeterminada, esta propiedad se establece en "CDATA".
PrefixNamespaceDeclared Character stringPrefijo para los espacios de nombres declarados. De forma predeterminada, esta propiedad se establece en "%".
PrefixNamespaceNode Character stringPrefijo para el espacio de nombres del nodo. De forma predeterminada, esta propiedad se establece en "$".
PrefixText Character stringPrefijo del texto de los nodos de texto XML en JSON. De forma predeterminada, esta propiedad se establece en "#text".
XMLRootName Character stringNombre 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

JSONToXMLConvierte una cadena JSON en XML.
XMLToJSONConvierte una cadena XML en JSON.
Versión mínima requerida
  • Versión 27
Esta página también está disponible para…
Comentarios
Haga clic en [Agregar] para publicar un comentario

Última modificación: 26/01/2023

Señalar un error o enviar una sugerencia | Ayuda local