Articulo de referencia

UBJSON

Universal Binary JSON ( UBJSON ) es un formato de intercambio de datos informáticos . Se trata de una versión binaria que imita directamente a JSON , pero que requiere menos byt...

Universal Binary JSON ( UBJSON ) es un formato de intercambio de datos informáticos . Se trata de una versión binaria que imita directamente a JSON , pero que requiere menos bytes de datos. Su objetivo es lograr la generalidad de JSON, combinada con una mayor facilidad de procesamiento.

Fundamentación y objetivos

UBJSON es un sucesor propuesto para BSON , BJSON y otros. UBJSON tiene los siguientes objetivos:

  • Compatibilidad total con la especificación JSON: existe una correspondencia uno a uno entre JSON estándar y UBJSON.
  • Facilidad de implementación: solo se incluyen tipos de datos que son ampliamente compatibles con los lenguajes de programación más populares, para evitar problemas derivados de la falta de compatibilidad con ciertos lenguajes.
  • Facilidad de uso: se comprende y se adopta rápidamente.
  • Velocidad y eficiencia: UBJSON utiliza representaciones de datos que son (aproximadamente) un 30 % más pequeñas que sus equivalentes JSON compactados y están optimizadas para un análisis rápido. Admite la serialización en flujo, lo que significa que la transferencia de UBJSON a través de una conexión de red puede comenzar a enviar datos antes de que se conozca el tamaño final de los mismos.

Tipos de datos y sintaxis

Los datos UBJSON pueden ser un valor o un contenedor .

Tipos de valor

UBJSON utiliza una única tupla binaria para representar todos los tipos de valores JSON: [ 1 ]

 tipo [longitud] [datos]

Cada elemento de la tupla se define como:

tipo

El tipo es un carácter ASCII de 1 byte que indica el tipo de datos que le siguen. Se eligieron caracteres ASCII para facilitar al máximo la revisión manual y la depuración de datos almacenados en formato UBJSON (por ejemplo, para que los datos sean relativamente legibles en un editor hexadecimal). Hay tipos disponibles para los cinco tipos de valores JSON. También existe un tipo que no realiza ninguna operación y que se utiliza para mantener la conexión activa (keep-alive).

Los números de alta precisión se representan como un valor numérico codificado en cadena UTF-8 de longitud arbitraria.

longitud (opcional)

La longitud es un número entero (por ejemplo, uint8 o int64) que codifica el tamaño de la carga útil de datos en bytes. Se utiliza para cadenas, números de alta precisión y, opcionalmente, contenedores. Se omite para otros tipos.

La longitud se codifica siguiendo la misma convención que los enteros, incluyendo así su propio tipo. Por ejemplo, la cadena hellose codifica como S, U,0x05, h, e, l, l, o.

datos (opcional)

Una secuencia de bytes que representa los datos binarios reales para este tipo de valor. Todos los números están en orden big-endian .

Tipos de contenedores

De forma similar a JSON, UBJSON define dos tipos de contenedores: array y object . [ 2 ]

Los arreglos son secuencias ordenadas de elementos, representadas como un [seguido de cero o más elementos de valor y tipo de contenedor y un final ].

Los objetos son conjuntos etiquetados de elementos, representados como una cadena {seguida de cero o más pares clave-valor y un carácter de cierre }. Cada clave es una cadena con el Scarácter omitido, y cada "valor" puede ser cualquier elemento de tipo valor o contenedor.

Alternativamente, los arreglos y objetos pueden indicar la cantidad de elementos que contienen #seguido de un número entero antes de su primer elemento, en cuyo caso se omite el ]o final }. Además, si todos los elementos tienen el mismo tipo, los tipos se pueden omitir y reemplazar por un solo $seguido del tipo, en cuyo caso el recuento de elementos debe seguir inmediatamente. Por ejemplo, el arreglo ["a","b","c"] puede representarse como [, $, C, #, U,0x03, a, b, c.

Datos binarios

Aunque no existe un tipo binario explícito, los datos binarios se almacenan en una matriz fuertemente tipada de valores uint8. Esto garantiza la eficiencia binaria a la vez que mantiene la compatibilidad con JSON, a pesar de que JSON no admite directamente datos binarios. [ 3 ] [ 4 ]

Representación

Se recomienda el tipo MIME "application/ubjson", así como la extensión de archivo ".ubj" cuando se almacena en un sistema de archivos. [ 4 ]

Soporte de software

Véase también

Referencias

  1. "Tipos de valor | Especificación JSON binaria universal" . Consultado el 20 de julio de 2019 .
  2. "Tipos de contenedores | Especificación JSON binaria universal" . Consultado el 20 de julio de 2019 .
  3. "Datos binarios | Especificación JSON binaria universal" . Consultado el 20 de julio de 2019 .
  4. 1 2 3 "UBJSON (.ubj) Documentación del lenguaje Wolfram" . Consultado el 20 de julio de 2019 .
  5. "Formato de almacenamiento UBJSON" . Consultado el 20 de julio de 2019 .
  • Sitio web oficialEdita esto en Wikidata