JSON
Sitio web de Altova: Asignación de datos JSON
JSON (JavaScript Object Notation) es un popular formato de datos para el almacenamiento y el transporte de datos. Con MapForce Enterprise puede asignar datos entre cualquiera de los formatos compatibles con MapForce y JSON. También puede serializar datos JSON como cadenas (por ejemplo, para escribir esos datos en una BD) o transformar cadenas en estructuras JSON con ayuda de un componente Analizar/serializar (véase Redistribuir y serializar cadenas de texto).
Para usar archivos JSON en asignaciones el lenguaje de la asignación debe ser uno de estos: BUILT-IN, C# o Java. Para más información consulte Lenguajes de transformación. |
Al igual que ocurre con otros tipos de componentes compatibles con MapForce, en este caso también hace falta definir en primer lugar un esquema para que se puedan leer o escribir datos JSON. Si no tiene un archivo de esquema, MapForce puede generar uno de forma automática (véase Agregar archivos JSON como componentes de asignación). Si usa un archivo de esquema JSON que no haya sido generado por MapForce, entonces MapForce esperará que el archivo sea de una de estas versiones: Draft 04, Draft 06, Draft 07, Draft 2019-09, Draft 2020-12 o bien que no corresponda a ninguna versión. Para más información sobre las versiones del esquema JSON consulte la especificación JSON Schema.
La imagen siguiente muestra un ejemplo de cómo se ve una estructura JSON en MapForce:
Componente JSON en MapForce
Como se ve en la imagen anterior, la estructura de los nodos del componente JSON refleja la estructura del archivo de instancia JSON. En la tabla que aparece a continuación puede ver la representación convencional de los tipos JSON básicos de MapForce.
Tipo | Representación en MapForce |
---|---|
Matriz | |
Booleano | |
Nulo | |
Número o entero | |
Objeto | |
Cadena de texto |
También hay algunos casos especiales:
Caso | Descripción |
---|---|
additionalProperties, patternProperties | El nodo aparece en el componente JSON dentro de todos los objetos que tengan una propiedad additionalProperties con valor true o que no estén presentes en el esquema. Permite crear asignaciones de datos con propiedades que no están definidas explícitamente en el esquema (véase Ejemplo: asignación de datos entre JSON y CSV).
Este nodo también puede aparecer en objetos que tengan la propiedad patternProperties. |
Subtipos | La especificación JSON schema permite definir subtipos para objetos y matrices (anyOf, allOf, oneOf). MapForce muestra estos subtipos por medio de nodos de estructura especiales ( ) que no tienen una representación directa en el archivo de instancia JSON.
Si la asignación lee datos de un archivo JSON, estos nodos subtipos aportan un valor si el valor de entrada actual es válido según el esquema del subtipo.
Si la asignación escribe datos en un archivo JSON, asegúrese de seleccionar el subtipo correcto. Si se escriben varios subtipos, pueden duplicarse propiedades de objeto, lo cual daría lugar a archivos JSON de salida no válidos. |
Varios tipos en la misma ubicación | El esquema JSON permite que haya varios tipos en la misma ubicación. En casos así el componente de MapForce muestra nodos distintos por cada tipo básico que pueda aparecer en dicha ubicación. |
Nombres de los tipos | En MapForce las propiedades title y description de los tipos en el esquema JSON se muestran en los campos tipo y anotación. Si falta la propiedad title, entonces MapForce puede utilizar parte del URI de la propiedad $ref como nombre del tipo. |
Matrices con varios tipos de elemento | Si una matriz tiene tipos de elementos diferentes en el esquema JSON (p.ej. tanto cadenas como números), MapForce muestra un nodo item por cada tipo de elemento. Cuando el destino de la asignación es un archivo JSON, podrá crear matrices que contengan varios tipos diferentes. |
Matrices definidas como tuplas | Si una matriz tiene elementos cuyos tipos se asignan dependiendo de la posición que tengan en el esquema JSON, MapForce muestra el índice basado en cero del elemento como diferentes nodos (p.ej.: item[0], item[1] y así sucesivamente). Si el destino de la asignación es un archivo JSON puede especificar el tipo de cada elemento de la matriz por medio de su índice basado en cero. |