Datos
¿Qué es CBOR?
CBOR (Concise Binary Object Representation) es un estándar del IETF para codificar en binario elementos como números, cadenas, listas y mapas. Busca facilitar implementaciones y mensajes compactos sin dejar de ser extensible, y puede representar datos similares a JSON. No es un formato de texto: para leerlo o escribirlo se necesita una herramienta o biblioteca compatible con CBOR.
Cuándo elegir este formato
- Representar datos similares a JSON en formato binario compacto
- Usar etiquetas estándar o propias de una aplicación para indicar el significado
Cuándo evitar este formato
- Datos que las personas deban leer y editar directamente como texto
- Mezclar perfiles o reglas de codificación CBOR sin acordarlo entre los extremos
Usos habituales
- Intercambiar datos estructurados en dispositivos y redes con recursos limitados
- Representar datos en COSE y protocolos IoT
Características
- RFC 8949 define application/cbor y la extensión .cbor
- Representa enteros, números de coma flotante, cadenas de bytes, listas y mapas
- Las etiquetas pueden añadir significado, por ejemplo a fechas o valores propios de una aplicación
Ventajas y desventajas
Ventajas
- La codificación compacta resulta útil en entornos con recursos limitados
- Un decodificador genérico puede leer la estructura básica sin compartir antes un esquema fijo
Desventajas
- El contenido binario es difícil de inspeccionar en un editor de texto
- Un mismo dato puede tener varias codificaciones; firmas y hashes pueden requerir reglas deterministas
- CBOR Sequence concatena elementos y no equivale a un único elemento CBOR; usa otro tipo multimedia
Abrir y convertir
Cómo abrirlo
Léelo con una biblioteca o un decodificador CBOR y consulta su notación de diagnóstico o una vista similar a JSON. Comprueba cómo se muestran los valores sin equivalente directo en JSON, como las etiquetas y las cadenas de bytes.
Cómo convertirlo
Al convertir a JSON, las cadenas de bytes y los valores con etiquetas pueden necesitar representaciones propias de la herramienta. Para firmas, hashes o claves de caché, sigue las reglas acordadas por el protocolo, como la codificación determinista de RFC 8949.
Precauciones
- Un elemento CBOR y una CBOR Sequence son cosas distintas. Si se concatenan varios elementos, confirma que el receptor espera una secuencia según RFC 8742.
- Sigue la definición del protocolo para el significado de las etiquetas y los perfiles de aplicación.
- application/cbor corresponde a un solo elemento CBOR. Comprueba la especificación receptora para el encuadre y el contenido esperado.
Preguntas frecuentes
¿CBOR es un formato de compresión?
No. CBOR codifica estructuras de datos en binario; no es un algoritmo de compresión de uso general.
¿CBOR puede representar los mismos datos que JSON?
Puede representar valores similares a JSON, pero también incluye cadenas de bytes y etiquetas, que JSON no tiene. Para convertirlos hay que decidir cómo representar esos valores.