Indata

Utdata

Vad är MessagePack till JSON?

Din gRPC-sidecar loggar request-bodyn som en lång hex-sträng och du behöver faktiskt se vad som ligger i den. Eller Redis returnerade ett värde som föregående tjänst lade in som msgpack och terminalen visar \x82\xa7orderId\xa8ORD-7421. MessagePack är ett kompakt binärt format — perfekt på tråden, oläsligt i en loggrad. Den här sidan tar hex- eller base64-dumpen och ger dig JSON:en den representerar.

Avkodningen följer den officiella MessagePack-wire-format-specen via JavaScript-biblioteket @msgpack/msgpack. Maps blir objekt, arrays blir arrays, ints och floats avkodas direkt till JSON-tal, och resultatet skrivs ut snyggt enligt RFC 8259. Hex med 0x-prefix, \x-escapes, mellanslag eller kommatecken — allt parsas utan problem. Och om indatat är base64 (enligt RFC 4648) upptäcker vi det automatiskt.

Ingen uppladdning, ingen backend, ingen loggning. Avkodningen körs i din webbläsare som en vanlig Uint8Array — stäng fliken så är byten borta.

Så använder du MessagePack till JSON

Klistra in, läs, kopiera. Det finns ingen Konvertera-knapp — högerpanelen uppdateras medan du skriver, med 300 ms debounce så att den inte räknar om vid varje tangenttryck.

1

Klistra in hex eller base64

Släpp MessagePack-byten i den vänstra editorn. Allt går — ren hex (82a7...), hex med mellanslag (82 a7 6f), Pythons byte-litteraler med \x-escapes, eller en base64-blob. Tryck Exempel för att ladda en order-tracking-payload som avkodas till ett riktigt objekt.

82a76f72646572496441 4f52442d3734323120a574 6f74616c cb4056600000000000

Det utdraget är en del av en Order-payload — orderId, total, items, customer. Efter avkodning får du tillbaka hela strukturen som JSON.

2

Läs JSON:en till höger

Högerpanelen avkodar om vid varje förändring. Är byten giltig MessagePack ser du objektet. Är de avhuggna, paddade med skräp eller egentligen ett annat format (CBOR, BSON) visar panelen parser-felmeddelandet — oftast räcker det för att se var indatat är fel.

3

Kopiera det du behöver

Tryck på Kopiera på utdatasidan för att få JSON:en. Släng in den i en unit-test-fixture, klistra in i ett buggticket eller mata in den i vår JSON Formatter om du vill ha annan formatering. För att gå åt andra hållet (objekt → msgpack), använd JSON till MessagePack.

När du faktiskt använder det

Läsa bodyn i en gRPC- eller sidecar-logg

En service-mesh-sidecar dumpar request-bodies som hex. Bodyn är msgpack för att tjänsten uppströms serialiserar så. Klistra in hexen, se objektet, hitta att anropet hade orderId: "ORD-7421" och total: 89.50 i stället för att gissa.

Inspektera ett Redis-värde

Du sparade ett objekt i Redis med en msgpack-codec för att spara plats. Nu vill du veta vad som ligger i session:42 utan att skriva ett skript. Kör GET, kopiera värdet (de flesta klienter visar det som hex eller base64) och klistra in det här.

Avkoda en cache-post

Cachar som siktar på små payloads — MessagePack, FlatBuffers, ibland rå protobuf — finns överallt nu. När den cachade bloben är msgpack och du behöver jämföra den mot live-JSON är det här snabbaste vägen till en rättvis jämförelse.

Stämma av vad en klient faktiskt skickar

Du skrev en mobilklient som kodar request-bodyn med msgpack för att spara bandbredd. Du stöter på en regression. Fånga de riktiga byten (Charles, mitmproxy, network-fliken), klistra in dem och bekräfta att fältnamn och värden matchar schemat din server förväntar sig. Kund Ava Chen, items SKU-101 × 2 — ja eller nej.

Vanliga frågor

Laddas mina byte upp någonstans?

Nej. Avkodningen är ren JavaScript i din webbläsare — biblioteket @msgpack/msgpack läser indatat som Uint8Array, går igenom wire-formatet och renderar resultatobjektet som JSON. Inget fetch, ingen analytik på indatat, inget lämnar fliken. Behandla det som vilket lokalt CLI-verktyg som helst.

Hex eller base64 — spelar det roll vad jag klistrar in?

Båda funkar. Verktyget testar hex först (eftersom hex med 0x- eller \x-prefix, mellanslag eller kommatecken är den vanligaste loggformen) och faller tillbaka till base64 om indatat inte är giltig hex. Har du en Python-byte-litteral b'\x82\xa7order' avkodas även den — omslaget b'...' tas bort och escapes expanderas.

Varför ser tidstämplarna i utdatat konstiga ut?

MessagePack har en inbyggd timestamp extension type som biblioteket avkodar till en JS Date. När det stringifieras till JSON blir det en ISO 8601-sträng. Ser du något som "2026-05-05T12:34:56.000Z" i utdatat är det en riktig tidstämpel som encodern bäddade in — inte en bugg.

Vad händer om indatat bara är delvis giltigt?

Avkodaren läser wire-formatet byte för byte. Säger ett längdprefix "härnäst kommer en 16-byte-sträng" och bara 8 byte återstår, slänger den ett parse-fel. Felmeddelandet i högerpanelen säger oftast vilken type-token som sprack och ungefär var — det räcker normalt för att hitta en avhuggen inklistring eller en vilsen byte.

Klarar den binära blobbar (bin-familjen)?

Ja. bin 8/bin 16/bin 32-värden kommer tillbaka som Uint8Array-instanser. JSON har ingen inbyggd byte-typ, så de renderas som {"0":1,"1":2,...} vid stringify. Behöver du specifikt base64 för bin-fälten, avkoda här först och transformera sedan med vårt verktyg JSON till Base64.

Hur står det sig mot protobuf eller CBOR?

MessagePack är schemalöst (nycklarna lever i byten), CBOR är liknande men har fler typer och en annan kodning, och protobuf kräver ett .proto-schema för att överhuvudtaget kunna avkoda. Är dina byte protobuf kommer det här verktyget att misslyckas — testa vår sida Protobuf till JSON i stället. Är de CBOR är wire-formatet liknande men inte samma, så du behöver en CBOR-specifik avkodare.

Andra MessagePack-verktyg

MessagePack-verktyg som passar bra ihop med det här — för att gå åt andra hållet, validera eller bara titta på byten: