Input

Output

Hvad er MessagePack til JSON?

Din gRPC-sidecar logger request-body'en som en lang hex-streng, og du har brug for faktisk at se, hvad der står i den. Eller Redis returnerede en værdi, som den forrige service gemte som msgpack, og terminalen viser \x82\xa7orderId\xa8ORD-7421. MessagePack er et kompakt binært format — fint på linjen, ulæseligt i en loglinje. Denne side tager hex- eller base64-dumpet og giver dig den JSON, det repræsenterer.

Afkodningen følger den officielle MessagePack wire-format-spec via JavaScript-biblioteket @msgpack/msgpack. Maps bliver til objekter, arrays bliver til arrays, ints og floats afkodes direkte til JSON-tal, og resultatet pretty-printes efter RFC 8259. Hex med 0x-præfikser, \x-escapes, mellemrum eller kommaer — alt parses fint. Og hvis dit input er base64 (efter RFC 4648) opdager vi det automatisk.

Ingen upload, ingen backend, ingen logning. Afkodningen kører i din browser som en almindelig Uint8Array — luk fanen, så er bytene væk.

Sådan bruger du MessagePack til JSON

Indsæt, læs, kopiér. Der er ingen Konvertér-knap — højre panel opdateres mens du skriver, med 300 ms debounce så det ikke regner om ved hvert tastetryk.

1

Indsæt hexen eller base64

Smid MessagePack-byten i venstre editor. Alt går — ren hex (82a7...), hex med mellemrum (82 a7 6f), Python-byte-literaler med \x-escapes, eller en base64-blob. Tryk Eksempel for at indlæse et order-tracking-payload, der afkoder til et rigtigt objekt.

82a76f72646572496441 4f52442d3734323120a574 6f74616c cb4056600000000000

Det stykke er en del af et Order-payload — orderId, total, items, customer. Efter afkodning får du hele strukturen tilbage som JSON.

2

Læs JSON'en til højre

Højre panel afkoder igen ved hver ændring. Er bytene gyldig MessagePack ser du objektet. Er de afkortet, paddet med skrald eller faktisk et andet format (CBOR, BSON), viser panelet parser-fejlen — som regel nok til at se, hvor inputtet er galt.

3

Kopiér det du har brug for

Tryk på Kopiér-knappen på output-siden for at få JSON'en. Smid den i en unit-test-fixture, klistr den i en bug-ticket, eller send den gennem vores JSON Formatter, hvis du vil have anden formatering. For at gå den anden vej (objekt → msgpack), brug JSON til MessagePack.

Hvornår du faktisk vil bruge det

Læs body'en i en gRPC- eller sidecar-log

En service-mesh-sidecar dumper request-bodies som hex. Body'en er msgpack, fordi den opstrøms-service serialiserer sådan. Indsæt hexen, se objektet, find ud af at kaldet havde orderId: "ORD-7421" og total: 89.50 i stedet for at gætte.

Inspicér en Redis-værdi

Du gemte et objekt i Redis med en msgpack-codec for at spare plads. Nu vil du vide, hvad der ligger i session:42 uden at skrive et script. Kør GET, kopiér værdien (de fleste klienter viser den som hex eller base64), indsæt her.

Afkod en cache-entry

Caches der sigter mod små payloads — MessagePack, FlatBuffers, sommetider rå protobuf — er overalt nu. Når den cachede blob er msgpack, og du skal sammenligne den med live-JSON, er det her hurtigste vej til en fair sammenligning.

Tjek hvad en klient faktisk sender

Du skrev en mobilklient, der koder request-body'en med msgpack for at spare båndbredde. Du rammer en regression. Fang de rigtige bytes (Charles, mitmproxy, network-fanen), indsæt og bekræft, at feltnavne og værdier matcher det skema, din server forventer. Kunde Ava Chen, items SKU-101 × 2 — ja eller nej.

Almindelige spørgsmål

Bliver mine bytes uploadet et sted?

Nej. Afkodningen er ren JavaScript i din browser — biblioteket @msgpack/msgpack læser dit input som Uint8Array, går wire-formatet igennem og renderer det resulterende objekt som JSON. Ingen fetch, ingen analytik på inputtet, intet forlader fanen. Behandl det som ethvert lokalt CLI-værktøj.

Hex eller base64 — gør det en forskel hvad jeg indsætter?

Begge dele virker. Værktøjet prøver hex først (fordi hex med 0x- eller \x-præfikser, mellemrum eller kommaer er den mest almindelige logform) og falder tilbage til base64, hvis inputtet ikke er gyldig hex. Har du en Python-byte-literal b'\x82\xa7order' afkodes den også — indpakningen b'...' fjernes og escapes udvides.

Hvorfor ser mine timestamps mærkelige ud i outputtet?

MessagePack har en indbygget timestamp extension type, som biblioteket afkoder til en JS Date. Når det stringifies til JSON bliver det til en ISO 8601-streng. Ser du noget som "2026-05-05T12:34:56.000Z" i outputtet, er det et rigtigt timestamp, encoderen har lagt ind — ikke en bug.

Hvad hvis inputtet kun er delvist gyldigt?

Afkoderen læser wire-formatet byte for byte. Hvis et længde-præfiks siger "næste er en 16-byte-streng" og kun 8 bytes er tilbage, kaster den en parse-fejl. Fejlmeddelelsen i højre panel fortæller normalt hvilken type-token, der fejlede, og cirka hvor — det er som regel nok til at finde en afkortet indsætning eller en strejfende byte.

Kan den håndtere binære blobs (bin-familien)?

Ja. bin 8/bin 16/bin 32-værdier kommer tilbage som Uint8Array-instanser. JSON har ikke en indbygget byte-type, så de renderes som {"0":1,"1":2,...} ved stringify. Har du specifikt brug for base64 til bin-felterne, så afkod her først og transformér derefter med vores værktøj JSON til Base64.

Hvordan klarer det sig mod protobuf eller CBOR?

MessagePack er schemaløs (nøglerne ligger i byten), CBOR er ligner men har flere typer og en anden kodning, og protobuf kræver et .proto-skema for overhovedet at kunne afkode. Hvis dine bytes er protobuf, fejler dette værktøj — prøv i stedet vores side Protobuf til JSON. Hvis det er CBOR er wire-formatet tæt på men ikke det samme, så du har brug for en CBOR-specifik afkoder.

Andre MessagePack-værktøjer

MessagePack-værktøjer der passer godt sammen med dette her — for at gå den anden vej, validere eller bare kigge på byten: