Indsæt din MessagePack-streng som hex eller base64 her. Vi dekoder, mens du skriver.Indsæt msgpack hex/base64

Hvad MessagePack Viewer gør

Hvis du nogensinde har stirret på en hex-blob i en Cloudflare Worker-log og spekuleret på, hvad der egentlig er inde i den, er det her siden til det. MessagePack er et binært serialiseringsformat, der producerer noget i retning af 83a76f72646572496478a84f52442d37343231... — kompakt på ledningen, fuldstændig ulæseligt for øjet. Indsæt hex (eller base64 — vi spotter det selv) i venstre rude, og højre rude viser dig det dekodede JSON-træ.

Dekodningen foregår lokalt med det officielle bibliotek @msgpack/msgpack, det samme som de fleste Node- og browserapps bruger. Formatet følger den offentlige spec for MessagePack-wireformatet, så enhver payload, der er produceret af msgpack-python, msgpack-c, msgpack-java eller en anden spec-tro implementering, virker her. Der er ingen upload — bytes forlader aldrig din browser, hvilket betyder noget, når bloben bærer noget i stil med customer: 'Ava Chen' eller et internt subscriberId: 'SUB-1001'.

Dekodningen er debouncet til 300ms, så du kan indsætte, redigere og indsætte igen uden at klikke på noget. Ingen Convert-knap, ingen spinner — du skriver, du læser.

Sådan ser du en MessagePack-payload

Tre trin. Virker for hex-strenge kopieret ud af en log, base64-felter trukket ud af et Kafka-besked, eller rå bytes du har indsat fra en debugger.

1

Indsæt hex eller base64 i venstre rude

Smid den kodede MessagePack i venstre editor. Vi spotter det selv: parser det rent som hex (efter at vi har skåret whitespace, kommaer, 0x-præfikser og \x-escapes væk), behandler vi det som hex; ellers prøver vi base64 (RFC 4648). Begge dele dur. Eksempel på en hex-kodet ordre:

83a76f72646572496478a84f52442d37343231a56974656d739282a3736b75a7534b552d313031a37174790282a3736b75a7534b552d323434a37174790182a8637573746f6d6572a841766120436865 6e

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

2

Læs den dekodede JSON til højre

Højre rude er skrivebeskyttet og viser den dekodede payload som pænt formateret JSON — samme indrykning som JSON.stringify(obj, null, 2). Maps bliver til objekter, arrays til arrays, int/float til tal, og binære blobs kommer ind som Uint8Array med byte-længden synlig. Tidsstempler fra timestamp-extension-typen renderes som ISO-strenge.

3

Iterer uden at klikke

Rediger inputtet, og JSON'en opdaterer efter en pause på 300ms. Hvis bytes ikke er gyldig MessagePack, fortæller vi dig, hvad der gik galt (afkortet buffer, uventet typebyte osv.) i stedet for at lade som om, det parsede. Brug knappen Eksempel-msgpack til at hente en kendt Order-payload til sammenligning.

Hvornår du faktisk vil bruge det

Inspicer en MessagePack-besked i en log

Din service skriver msgpack-kodede payloads til en struktureret log som hex (i mange tilfælde kortere end base64). Når noget knækker i produktion, kopierer du hex'en ud af loglinjen, indsætter her og ser straks, hvad producenten rent faktisk sendte — orderId ORD-7421, de rigtige items, det forkerte customer-felt, hvad det end er.

Debug af en Redis- eller Kafka-payload

Mange backends bruger MessagePack i stedet for JSON på hot paths, fordi det er 30 til 50 procent mindre og hurtigere at parse. Når du trækker en værdi ud af Redis eller kigger på et Kafka-topic med kcat -e, kommer bytes ud som base64. Indsæt dem her for at bekræfte, at konsumenten og producenten er enige om skemaet.

Verificer round-trips mellem sprog

Du koder i Python med msgpack.packb(...) og dekoder i Go med msgpack.Unmarshal(...). Når Go-siden ser en forkert type, dump bytes fra Python som hex og kør dem gennem denne viewer — det fortæller dig, om buggen er i koderen eller dekoderen, før du bruger en eftermiddag på at skændes om det.

Læs MessagePack fra en gemt fil

Du har en <code>.msgpack</code>-fil fra et Jupyter notebook-eksport, et spilsave eller et analytics-dump. Kør <code>xxd -p</code> på den for at få hex, indsæt, læs. Hurtigere end at rigge biblioteket op i en ny Python REPL, bare for at se, hvordan én post ser ud.

Almindelige spørgsmål

Forlader mine data browseren?

Nej. Dekodningen kører helt i denne fane med @msgpack/msgpack-biblioteket, der følger med siden. Ingen fetch, ingen upload, ingen telemetri på bytes. Luk fanen, og dataene er væk. Når det så er sagt — behandl URL-linjen som offentligt rum, læg ikke en payload der, og ryd udklipsholderen, hvis der lå hemmeligheder i den.

Kan jeg indsætte base64 i stedet for hex?

Ja. Vieweren spotter det selv: hvis inputtet parser som hex, efter vi har skåret whitespace, kommaer, 0x-præfikser og Python-stil \x-escapes væk, behandler vi det som hex; ellers prøver vi standard-base64. Begge dur for samme payload. De fleste logs bruger hex til korte beskeder og base64 til større.

Hvad sker der med binære felter, tidsstempler og extension-typer?

Binær (bin-familien) dekodes til Uint8Array og udskrives som { "0": 134, "1": 12, ... } i JSON-træet (da standard-JSON ikke har en indbygget byte-type — se Uint8Array-dokumentationen på MDN). Tidsstempler fra timestamp-extension-typen dekodes til indbyggede Date-objekter, som serialiseres som ISO 8601-strenge. Andre extension-typer kommer ind som { type, data }-tupler — du ser typekoden og de rå bytes.

Hvorfor er det dekodede output anderledes end det, min server sendte?

To sædvanlige mistænkte. Et: dit input er afkortet — logafkortning kapper ofte de sidste par bytes, og msgpack læner sig op ad felter med længdepræfiks, så en manglende hale giver en forvirrende fejl eller delvist output. To: producenten brugte en custom extension-type, og modtageren kender den ikke. Sammenlign bytes med den officielle spec, hvis strukturen ser umulig ud.

Kan den dekode kæmpepayloads?

Et par megabytes hex indsættes fint i moderne browsere. Ud over det begynder Ace-editoren på input-siden at føles træg — på det tidspunkt er du bedre tjent med at læse filen direkte med biblioteket i et Node-script. Dekoderen er ikke flaskehalsen; det er editoren.

Hvordan producerer jeg hex som det i eksemplet?

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 sprog har en one-liner; den resulterende hex indsættes her direkte.

Andre MessagePack-værktøjer

At se er én side — disse klarer hele round-trippen og beslægtede formater: