Codec, convertissez vos données localement

Convertissez XML, JSON et Protobuf dans les deux sens.
Tout s'exécute dans votre navigateur, sans transmettre vos données à un serveur.

  • Conversion bidirectionnelle
  • Dans le navigateur
  • Schémas Protobuf
  • Wire format lisible
Libre Local Souverain Rapide
SXP.Codec — JSON vers Protobuf
// JSON -> binaire Protobuf const bytes = SXP.Codec.encode( data, proto, "Utilisateur"); // 141 o de JSON -> 61 o bytes.length; // 61
XML ⇄ JSON ⇄ Protobuf 100 % dans le navigateur Aucune donnée envoyée Schéma .proto au runtime Wire format décodé Tailles comparées Souverain Zéro dépendance serveur

① Schéma .proto

Requis pour la conversion Protobuf — le binaire ne stocke que des numéros de champ, pas les noms.
XML balisé — o
JSON pivot — o
Protobuf binaire — o

Poids comparé de la même donnée

XML
— o
JSON
— o
Protobuf
— o

Wire format Protobuf — champs de premier niveau

Chaque champ est précédé d'un tag = (numéro de champ « << 3 ») | type de fil. Le nom du champ n'apparaît jamais dans le binaire : seul son numéro compte.

ChampType de filValeur
📖 Comprendre avant de convertir Pour comparer XML, JSON et Protobuf au-delà de la syntaxe, découvrez leurs usages, leur wire format et les critères de choix selon vos échanges. Choisir entre XML, JSON et Protobuf →

API JavaScript

Le moteur est exposé sous SXP.Codec. JSON sert de pivot : on convertit XML ⇄ JSON sans schéma, et JSON ⇄ Protobuf en fournissant le texte .proto et le nom du message.

// 1. XML <-> JSON : purement structurel, aucun schéma requis
const obj = SXP.Codec.xmlToJson(xmlString);
const xml = SXP.Codec.jsonToXml(obj, "Utilisateur");

// 2. JSON -> Protobuf : encode selon le schéma .proto
const bytes = SXP.Codec.encode(obj, protoText, "Utilisateur"); // Uint8Array

// 3. Protobuf -> JSON : décode (impose le même .proto)
const back = SXP.Codec.decode(bytes, protoText, "Utilisateur");

// 4. Inspecter / mesurer
SXP.Codec.hexDump(bytes);      // dump hex + ascii
SXP.Codec.inspect(bytes);      // [{ field, wire, value }]
SXP.Codec.byteLength(json);    // poids en octets UTF-8