Comparer
CBOR ou JSON
CBOR est un format binaire d'échange dont le modèle étend JSON, avec des valeurs comme chaînes d'octets et balises. JSON est un format texte lisible largement utilisé par les API Web et outils de configuration.
Quel format choisir ?
Choisissez JSON pour le texte édité ou inspecté par des personnes et la compatibilité avec les API JSON existantes. Envisagez CBOR si le protocole exige des données binaires compactes, octets, types étendus ou encodage déterministe.
Adapté pour CBOR
Échanger des données structurées sur des appareils et réseaux aux ressources limitées · Représenter des données dans COSE et les protocoles IoT
- Représenter des données proches de JSON dans un format binaire compact
- Utiliser des étiquettes standard ou propres à l’application pour préciser le sens des valeurs
Adapté pour JSON
API web, fichiers de configuration et échange de données
- Transférer des données structurées
Informations générales
| Élément | CBOR | JSON |
|---|---|---|
| Extension | .cbor | .json |
| Type MIME | application/cbor | application/json |
| Usages courants | Échanger des données structurées sur des appareils et réseaux aux ressources limitées · Représenter des données dans COSE et les protocoles IoT | API web, fichiers de configuration et échange de données |
| Comment ouvrir | Lisez le fichier avec une bibliothèque ou un décodeur CBOR, puis examinez sa notation diagnostique ou une vue proche de JSON. Vérifiez la représentation des valeurs sans équivalent direct en JSON, comme les étiquettes et chaînes d’octets. | Ouvrez-le dans un éditeur de texte, un IDE ou un visualiseur compatible JSON. |
| Exporter ou convertir | Lors d’une conversion en JSON, chaînes d’octets et valeurs étiquetées peuvent nécessiter une représentation propre à l’outil. Pour les signatures, hachages ou clés de cache, respectez les règles convenues par le protocole, comme l’encodage déterministe de RFC 8949. | Des applications ou outils de conversion peuvent le convertir vers des formats tels que CSV. |
Choisir selon l’usage
Représenter des données proches de JSON dans un format binaire compact
Échanger des données structurées sur des appareils et réseaux aux ressources limitées · Représenter des données dans COSE et les protocoles IoT
CBORUtiliser des étiquettes standard ou propres à l’application pour préciser le sens des valeurs
Échanger des données structurées sur des appareils et réseaux aux ressources limitées · Représenter des données dans COSE et les protocoles IoT
CBORTransférer des données structurées
API web, fichiers de configuration et échange de données
JSONPoint clé 1
JSON est un texte représenté par des caractères ; les éléments CBOR sont des octets binaires. CBOR gère directement entiers, chaînes d'octets et balises ; JSON exige souvent une convention telle que base64 pour le binaire.
En savoir plus sur les différencesPoint clé 2
JSON selon RFC 8259 définit objets, tableaux, chaînes, nombres, booléens et null sans imposer de schéma applicatif. CBOR ajoute des valeurs balisées et étend le modèle de données JSON.
En savoir plus sur les différencesEn savoir plus sur les différences
Utilisez JSON pour des interfaces textuelles inspectables et des outils variés. Utilisez CBOR pour les protocoles binaires tirant parti des octets, balises ou encodages déterministes. Convenez aux deux extrémités du sens des balises, des plages numériques, de la canonicalisation et des bibliothèques.
- La notation diagnostique CBOR sert au débogage ; l'échange réel utilise des éléments binaires. JSON échange du texte.
- Convertir CBOR en JSON peut perdre balises, distinction des chaînes d'octets, représentation des entiers, précision numérique ou propriétés d'encodage déterministe.
- Définissez le traitement des balises inconnues, grands entiers, clés de carte dupliquées et valeurs sans équivalent JSON direct ; testez les implémentations avec des messages réels.
Questions fréquentes
CBOR est-il simplement du JSON compressé ?
Non. CBOR possède son propre modèle binaire et accepte des valeurs telles que chaînes d'octets et balises que JSON ne représente pas nativement.