Invoer

Uitvoer

Wat is MessagePack naar JSON?

Je gRPC sidecar logt de request body als een lange hex string en je wilt eigenlijk lezen wat erin zit. Of Redis heeft een waarde teruggegeven die de vorige service als msgpack heeft opgeslagen en je terminal toont \x82\xa7orderId\xa8ORD-7421. MessagePack is een compact binair formaat — top op de lijn, onleesbaar in een logregel. Deze pagina pakt de hex of base64 dump en geeft je de JSON die erin zit.

Het decoderen volgt de officiële MessagePack wire-format spec via de @msgpack/msgpack JavaScript library. Maps worden objects, arrays blijven arrays, ints en floats decoderen direct naar JSON-getallen, en het resultaat wordt netjes geformatteerd volgens RFC 8259. Hex met 0x-prefixes, \x-escapes, spaties of komma's — dat parsen we allemaal. En als je input base64 is (per RFC 4648) detecteren we dat automatisch.

Geen upload, geen backend, geen logging. Het decoderen draait in je browser als een gewone Uint8Array — sluit het tabblad en de bytes zijn weg.

Hoe gebruik je MessagePack naar JSON

Plakken, lezen, kopiëren. Geen Convert-knop — het rechterpaneel update terwijl je typt, met 300 ms debounce zodat het niet bij elke toetsaanslag opnieuw rekent.

1

Plak de hex of base64

Drop de MessagePack-bytes in de linker editor. Alles mag — kale hex (82a7...), hex met spaties (82 a7 6f), Python byte-literals met \x-escapes, of een base64-blob. Klik Voorbeeld om een order-tracking payload te laden die decodeert naar een echt object.

82a76f72646572496441 4f52442d3734323120a574 6f74616c cb4056600000000000

Dat fragment is een stuk van een Order-payload — orderId, total, items, customer. Na decoderen krijg je de hele structuur terug als JSON.

2

Lees de JSON rechts

Het rechterpaneel decodeert opnieuw bij elke wijziging. Zijn de bytes valide MessagePack, dan zie je het object. Zijn ze afgekapt, met rommel gepad, of eigenlijk een ander formaat (CBOR, BSON), dan toont het paneel de parser-fout — meestal genoeg om te zien waar je input mis is.

3

Kopieer wat je nodig hebt

Druk op de Kopiëren-knop aan de outputkant om de JSON op te halen. Plak 'm in een unit-test fixture, in een bug-ticket, of stuur 'm door onze JSON Formatter als je een andere opmaak wilt. Voor de andere richting (object → msgpack) gebruik je JSON naar MessagePack.

Wanneer je dit echt gaat gebruiken

De body van een gRPC- of sidecar-log lezen

Een service-mesh sidecar dumpt request-bodies als hex. De body is msgpack omdat de upstream service dat zo serialiseert. Plak de hex, zie het object, ontdek dat de call orderId: "ORD-7421" en total: 89.50 droeg in plaats van te gokken.

Een Redis-waarde inspecteren

Je hebt een object in Redis opgeslagen met een msgpack-codec om ruimte te besparen. Nu wil je weten wat er in session:42 zit zonder een script te schrijven. Doe GET, kopieer de waarde (de meeste clients tonen 'm als hex of base64), plak hier.

Een cache-entry decoderen

Caches die op kleine payloads mikken — MessagePack, FlatBuffers, soms ruwe protobuf — zijn tegenwoordig overal. Als de gecachete blob msgpack is en je wilt 'm vergelijken met de live JSON, is dit de snelste route naar een eerlijke vergelijking.

Controleer wat een client echt verstuurt

Je schreef een mobiele client die de request body met msgpack codeert om bandbreedte te besparen. Je stuit op een regressie. Vang de echte bytes af (Charles, mitmproxy, network tab), plak ze en bevestig dat veldnamen en waardes overeenkomen met het schema dat je server verwacht. Klant Ava Chen, items SKU-101 × 2 — ja of nee.

Veelgestelde vragen

Worden mijn bytes ergens heen geüpload?

Nee. Het decoderen is pure JavaScript in je browser — de @msgpack/msgpack library leest je input als Uint8Array, loopt het wire format door en rendert het resulterende object als JSON. Geen fetch, geen analytics op de input, niets verlaat het tabblad. Behandel het als elk lokaal CLI-tool.

Hex of base64 — maakt het uit wat ik plak?

Allebei werkt. De tool probeert eerst hex (omdat hex met 0x- of \x-prefixes, spaties of komma's de meest voorkomende logvorm is), en valt terug op base64 als de input geen geldige hex is. Een Python byte-literal b'\x82\xa7order' decodeert ook — de wrapper b'...' wordt eraf gehaald en de escapes worden uitgepakt.

Waarom toont mijn output timestamps in iets raars?

MessagePack heeft een ingebouwde timestamp extension type die de library decodeert naar een JS Date. In JSON gestringificeerd wordt dat een ISO 8601-string. Zie je iets als "2026-05-05T12:34:56.000Z" in de output, dan is dat een echte timestamp die de encoder erin heeft gezet — geen bug.

Wat als de input deels geldig is?

De decoder leest het wire format byte voor byte. Als een lengte-prefix zegt "hierna komt een 16-byte string" en er zijn nog maar 8 bytes over, gooit hij een parse-error. De foutmelding in het rechterpaneel vertelt meestal welk type-token faalde en ongeveer waar — normaal genoeg om een afgekapte plak of een verdwaalde byte te vinden.

Gaat het ook met binaire blobs (de bin-familie)?

Ja. bin 8/bin 16/bin 32 waardes komen terug als Uint8Array-instanties. JSON heeft geen native bytes-type, dus ze renderen als {"0":1,"1":2,...} bij stringify. Heb je specifiek base64 nodig voor de bin-velden, decodeer dan hier eerst en transformeer daarna met onze tool JSON naar Base64.

Hoe verhoudt dit zich tot protobuf of CBOR?

MessagePack is schemaless (de keys zitten in de bytes), CBOR lijkt erop maar heeft meer types en een andere encoding, en protobuf heeft een .proto-schema nodig om überhaupt te kunnen decoderen. Als je bytes protobuf zijn, faalt deze tool — probeer in plaats daarvan onze pagina Protobuf naar JSON. Bij CBOR is het wire format vergelijkbaar maar niet hetzelfde, dus heb je een CBOR-specifieke decoder nodig.

Andere MessagePack-tools

MessagePack-tools die goed bij deze passen — voor de andere richting, valideren, of gewoon de bytes bekijken: