Entrée

Sortie

Qu'est-ce que MessagePack vers JSON ?

Ton sidecar gRPC log le corps de requête sous forme d'une grosse chaîne hex et tu as besoin de vraiment voir ce qu'il y a dedans. Ou bien Redis te renvoie une valeur qu'un service amont a stockée en msgpack et ton terminal affiche \x82\xa7orderId\xa8ORD-7421. MessagePack est un format binaire compact — top sur le réseau, illisible dans une ligne de log. Cette page prend le dump hex ou base64 et te rend le JSON qu'il représente.

Le décodage suit la spec officielle du format MessagePack via la librairie JavaScript @msgpack/msgpack. Les maps deviennent des objets, les arrays restent des arrays, les entiers et flottants décodent directement en nombres JSON, et le résultat est joliment formaté selon RFC 8259. Hex avec préfixes 0x, échappements \x, espaces ou virgules : tout passe — et si ton entrée est en base64 (selon RFC 4648), on le détecte automatiquement.

Pas d'upload, pas de backend, pas de logs. Le décodage tourne dans ton navigateur sous forme d'un simple Uint8Array — ferme l'onglet et les octets disparaissent.

Comment utiliser MessagePack vers JSON

Colle, lis, copie. Pas de bouton Convertir — le panneau de droite se met à jour pendant que tu tapes, avec un debounce de 300 ms pour ne pas mouliner à chaque touche.

1

Colle le hex ou base64

Lâche les octets MessagePack dans l'éditeur de gauche. Tout est accepté — hex brut (82a7...), hex avec espaces (82 a7 6f), littéraux d'octets Python avec \x, ou un blob base64. Clique Exemple pour charger un payload de suivi de commande qui décode en un vrai objet.

82a76f72646572496441 4f52442d3734323120a574 6f74616c cb4056600000000000

Ce fragment fait partie d'un payload Order — orderId, total, items, customer. Après décodage tu retrouves toute la structure en JSON.

2

Lis le JSON à droite

Le panneau de droite re-décode à chaque changement. Si les octets sont du MessagePack valide tu vois l'objet. S'ils sont tronqués, complétés par n'importe quoi, ou en fait dans un autre format (CBOR, BSON), le panneau affiche le message d'erreur du parser — généralement assez clair pour repérer où ton entrée part en vrille.

3

Copie ce qu'il te faut

Clique le bouton Copier côté sortie pour récupérer le JSON. Mets-le dans une fixture de test, colle-le dans un ticket de bug, ou passe-le dans notre Formateur JSON si tu veux un autre style. Pour l'autre sens (objet → msgpack), va sur JSON vers MessagePack.

Quand tu vas vraiment t'en servir

Lire le corps d'un log gRPC ou sidecar

Un sidecar de service mesh balance les corps de requête en hex. Le corps est en msgpack parce que c'est ce que sérialise le service amont. Colle le hex, vois l'objet, découvre que l'appel contenait orderId: "ORD-7421" et total: 89.50 au lieu de deviner.

Inspecter une valeur Redis

Tu as stocké un objet dans Redis avec un codec msgpack pour économiser de la place. Tu veux savoir ce qu'il y a dans session:42 sans écrire un script. Fais GET, copie la valeur (la plupart des clients l'affichent en hex ou base64), colle-la ici.

Décoder une entrée de cache

Les caches qui ciblent les petits payloads — MessagePack, FlatBuffers, parfois protobuf brut — sont partout maintenant. Quand le blob caché est en msgpack et que tu dois le comparer au JSON live, c'est le chemin le plus court pour une comparaison à armes égales.

Vérifier ce qu'envoie un client

Tu as écrit un client mobile qui encode le corps de requête en msgpack pour économiser de la bande passante. Tu tombes sur une régression. Capture les vrais octets (Charles, mitmproxy, onglet réseau), colle-les, et confirme que les noms de champ et les valeurs collent au schéma attendu par le serveur. Nom client Ava Chen, items SKU-101 × 2 — oui ou non.

Questions courantes

Mes octets sont-ils envoyés quelque part ?

Non. Le décodage est du JavaScript pur dans ton navigateur — la librairie @msgpack/msgpack lit ton entrée comme Uint8Array, parcourt le format binaire, et rend l'objet résultant en JSON. Pas de fetch, pas d'analytics sur l'entrée, rien ne quitte l'onglet. Traite-le comme n'importe quel outil CLI local.

Hex ou base64 — ça change quelque chose ?

Les deux marchent. L'outil tente hex d'abord (parce que hex avec préfixes 0x ou \x, espaces, virgules est la forme la plus courante dans les logs), et bascule sur base64 si l'entrée n'est pas du hex valide. Si tu as un littéral d'octets Python b'\x82\xa7order', ça décode aussi — le wrapping b'...' est retiré et les échappements sont étendus.

Pourquoi mes timestamps s'affichent bizarrement ?

MessagePack a une extension timestamp intégrée que la librairie décode en Date JS. En JSON ça devient une chaîne ISO 8601. Si tu vois une chaîne comme "2026-05-05T12:34:56.000Z" dans la sortie, c'est un vrai timestamp embarqué par l'encodeur — pas un bug.

Et si l'entrée n'est valide qu'à moitié ?

Le décodeur lit le format octet par octet. Si un préfixe de longueur dit "le suivant est une string de 16 octets" et qu'il n'en reste que 8, il jette une erreur de parsing. Le message d'erreur dans le panneau de droite te dit en général quel token de type a planté et où à peu près — normalement assez pour repérer un copier-coller tronqué ou un octet parasite.

Est-ce que ça gère les blobs binaires (la famille bin) ?

Oui. bin 8/bin 16/bin 32 reviennent en instances de Uint8Array. JSON n'a pas de type natif pour les octets, donc ils s'affichent comme {"0":1,"1":2,...} au stringify. Si tu veux spécifiquement du base64 pour les champs bin, décode ici d'abord puis transforme avec notre outil JSON vers Base64.

Comparé à protobuf ou CBOR ?

MessagePack est sans schéma (les clés vivent dans les octets), CBOR est proche mais avec plus de types et un encodage différent, et protobuf a besoin d'un schéma .proto pour décoder. Si tes octets sont du protobuf, cet outil va échouer — essaie plutôt notre page Protobuf vers JSON. Pour du CBOR, le format est proche mais pas identique, il te faut un décodeur CBOR dédié.

Autres outils MessagePack

Outils MessagePack qui se marient bien avec celui-ci — pour aller dans l'autre sens, valider, ou juste regarder les octets :