Lim inn MessagePack-strengen din som hex eller base64 her. Vi dekoder mens du skriver.Lim inn msgpack hex/base64

Hva MessagePack Viewer gjør

Hvis du noen gang har stirret på en hex-blob i en Cloudflare Worker-logg og lurt på hva som egentlig ligger inni, er dette siden for det. MessagePack er et binært serialiseringsformat som produserer noe sånt som 83a76f72646572496478a84f52442d37343231... — kompakt på linja, helt uleselig for øyet. Lim inn hex (eller base64 — vi gjenkjenner selv) i venstre panel, og høyre panel viser deg det dekodede JSON-treet.

Dekodingen skjer lokalt med det offisielle biblioteket @msgpack/msgpack, det samme som de fleste Node- og nettleserapper bruker. Formatet følger den offentlige specen for MessagePack-wireformatet, så enhver payload produsert av msgpack-python, msgpack-c, msgpack-java eller en annen spec-trofast implementasjon funker her. Det er ingen opplasting — bytes forlater aldri nettleseren din, noe som betyr noe når bloben bærer noe i stil med customer: 'Ava Chen' eller en intern subscriberId: 'SUB-1001'.

Dekodingen har debounce på 300ms, så du kan lime inn, redigere og lime inn på nytt uten å klikke på noe. Ingen Convert-knapp, ingen spinner — du skriver, du leser.

Slik ser du på en MessagePack-payload

Tre steg. Funker for hex-strenger kopiert ut av en logg, base64-felt trukket ut av en Kafka-melding, eller rå bytes du har limt inn fra en debugger.

1

Lim inn hex eller base64 i venstre panel

Slipp den kodede MessagePacken inn i venstre redigerer. Vi gjenkjenner selv: parser det rent som hex (etter at vi har fjernet whitespace, kommaer, 0x-prefikser og \x-escapes), behandler vi det som hex; ellers prøver vi base64 (RFC 4648). Begge funker. Eksempel på en hex-kodet ordre:

83a76f72646572496478a84f52442d37343231a56974656d739282a3736b75a7534b552d313031a37174790282a3736b75a7534b552d323434a37174790182a8637573746f6d6572a841766120436865 6e

Den bloben dekodes til en ordre med to linjer (SKU-101 x2 og SKU-244 x1) for kunden Ava Chen.

2

Les den dekodede JSON-en til høyre

Høyre panel er skrivebeskyttet og viser den dekodede payloaden som pent formatert JSON — samme innrykk som JSON.stringify(obj, null, 2). Maps blir til objekter, arrays til arrays, int/float til tall, og binære blobs kommer inn som Uint8Array med byte-lengden synlig. Tidsstempler fra timestamp-extension-typen rendres som ISO-strenger.

3

Itrer uten å klikke

Rediger input-en og JSON-en oppdaterer seg etter en pause på 300ms. Hvis bytes ikke er gyldig MessagePack, sier vi hva som gikk galt (avkortet buffer, uventet typebyte osv.) i stedet for å late som om det parset. Bruk Eksempel-msgpack-knappen til å laste en kjent Order-payload for sammenligning.

Når du faktisk kommer til å bruke det

Inspiser en MessagePack-melding i en logg

Tjenesten din skriver msgpack-kodede payloads til en strukturert logg som hex (ofte kortere enn base64). Når noe ryker i produksjon, kopierer du hex-en ut av loggraden, limer inn her, og ser umiddelbart hva produsenten faktisk sendte — orderId ORD-7421, riktige items, feil customer-felt, hva det enn er.

Debug av en Redis- eller Kafka-payload

Mange backends bruker MessagePack i stedet for JSON på hot paths fordi det er 30 til 50 prosent mindre og raskere å parse. Når du trekker en verdi ut av Redis eller titter på et Kafka-topic med kcat -e, kommer bytes ut som base64. Lim dem inn her for å bekrefte at konsument og produsent er enige om skjemaet.

Verifiser round-trips mellom språk

Du koder i Python med msgpack.packb(...) og dekoder i Go med msgpack.Unmarshal(...). Når Go-siden ser feil type, dump bytes fra Python som hex og kjør dem gjennom denne vieweren — det forteller deg om bug-en sitter i koderen eller dekoderen før du brenner en ettermiddag på å krangle om det.

Les MessagePack fra en lagret fil

Du har en <code>.msgpack</code>-fil fra en Jupyter notebook-eksport, et spillsave eller en analytics-dump. Kjør <code>xxd -p</code> på den for å få hex, lim inn, les. Raskere enn å rigge opp biblioteket i en ny Python REPL bare for å se hvordan én record ser ut.

Vanlige spørsmål

Forlater dataene mine nettleseren?

Nei. Dekodingen kjører helt og holdent i denne fanen ved hjelp av @msgpack/msgpack-biblioteket som følger med siden. Ingen fetch, ingen opplasting, ingen telemetri på bytes. Lukk fanen, og dataene er borte. Når det er sagt — behandle URL-linja som et offentlig rom, ikke putt en payload der, og tøm utklippstavla hvis det lå hemmeligheter der.

Kan jeg lime inn base64 i stedet for hex?

Ja. Vieweren gjenkjenner selv: parser input-en som hex etter at vi har fjernet whitespace, kommaer, 0x-prefikser og Python-stil \x-escapes, behandler vi den som hex; ellers prøver vi standard base64. Begge funker for samme payload. De fleste logger bruker hex for korte meldinger og base64 for større.

Hva skjer med binærfelt, tidsstempler og extension-typer?

Binært (bin-familien) dekodes til Uint8Array og skrives ut som { "0": 134, "1": 12, ... } i JSON-treet (siden standard-JSON ikke har en innebygd bytetype — se Uint8Array-dokumentasjonen på MDN). Tidsstempler fra timestamp-extension-typen dekodes til innebygde Date-objekter, som serialiseres som ISO 8601-strenger. Andre extension-typer kommer inn som { type, data }-tupler — du ser typekoden og de rå bytene.

Hvorfor er det dekodede outputet annerledes enn det serveren min sendte?

To vanlige mistenkte. En: input-en din er kuttet — loggavkortning kutter ofte de siste bytene, og msgpack lener seg på felt med lengde-prefiks, så en manglende hale gir en forvirrende feil eller delvis output. To: produsenten brukte en custom extension-type og mottakeren kjenner den ikke. Sammenlign bytene med den offisielle specen hvis strukturen ser umulig ut.

Kan den dekode kjempestore payloads?

Et par megabytes hex limes inn fint i moderne nettlesere. Utover det begynner Ace-redigereren på input-siden å føles treig — på det punktet er du bedre tjent med å lese filen direkte med biblioteket i et Node-skript. Dekoderen er ikke flaskehalsen; det er redigereren.

Hvordan produserer jeg hex som i eksempelet?

I Python: import msgpack; msgpack.packb(obj).hex(). I JS: Array.from(encode(obj)).map(b => b.toString(16).padStart(2, '0')).join(''). I Go: fmt.Sprintf("%x", msgpack.Marshal(obj)). De fleste språk har en one-liner; resultat-hex-en limes inn her direkte.

Andre MessagePack-verktøy

Å se på er én side — disse tar seg av hele round-trippen og nærliggende formater: