Inndata

Utdata

Hva er MessagePack til JSON?

gRPC-sidecaren din logger request-body'en som en lang hex-streng, og du trenger faktisk å se hva som ligger i den. Eller Redis returnerte en verdi som forrige tjeneste lagret som msgpack, og terminalen viser \x82\xa7orderId\xa8ORD-7421. MessagePack er et kompakt binært format — flott på tråden, uleselig i en loggrad. Denne siden tar hex- eller base64-dumpen og gir deg JSON-en den representerer.

Dekodingen følger den offisielle MessagePack-wire-format-spec'en via JavaScript-biblioteket @msgpack/msgpack. Maps blir til objekter, arrays blir til arrays, ints og floats dekodes rett til JSON-tall, og resultatet pretty-printes etter RFC 8259. Hex med 0x-prefikser, \x-escapes, mellomrom eller kommaer parses uten problem — og hvis input er base64 (etter RFC 4648) oppdager vi det automatisk.

Ingen opplasting, ingen backend, ingen logging. Dekodingen kjører i nettleseren din som en vanlig Uint8Array — lukk fanen, så er bytene borte.

Slik bruker du MessagePack til JSON

Lim inn, les, kopier. Det er ingen Konverter-knapp — høyre panel oppdateres mens du skriver, med 300 ms debounce slik at det ikke regner på nytt ved hvert tastetrykk.

1

Lim inn hex eller base64

Slipp MessagePack-byten i venstre editor. Alt går — ren hex (82a7...), hex med mellomrom (82 a7 6f), Pythons byte-literaler med \x-escapes, eller en base64-blob. Trykk Eksempel for å laste inn en order-tracking-payload som dekodes til et ekte objekt.

82a76f72646572496441 4f52442d3734323120a574 6f74616c cb4056600000000000

Den snutten er en del av en Order-payload — orderId, total, items, customer. Etter dekoding får du hele strukturen tilbake som JSON.

2

Les JSON-en til høyre

Høyre panel dekoder på nytt ved hver endring. Er bytene gyldig MessagePack ser du objektet. Er de avkappet, padda med søppel, eller egentlig et annet format (CBOR, BSON), viser panelet parser-feilmeldingen — som regel nok til å se hvor input er galt.

3

Kopier det du trenger

Trykk Kopier-knappen på output-siden for å hente JSON-en. Slipp den inn i en unit-test-fixture, lim den i en bug-ticket, eller kjør den gjennom vår JSON Formatter hvis du vil ha annen formatering. For å gå motsatt vei (objekt → msgpack), bruk JSON til MessagePack.

Når du faktisk bruker det

Lese body-en i en gRPC- eller sidecar-logg

En service-mesh-sidecar dumper request-bodies som hex. Body-en er msgpack fordi tjenesten oppstrøms serialiserer sånn. Lim inn hex-en, se objektet, finn ut at kallet hadde orderId: "ORD-7421" og total: 89.50 i stedet for å gjette.

Inspisere en Redis-verdi

Du lagret et objekt i Redis med en msgpack-codec for å spare plass. Nå vil du vite hva som ligger i session:42 uten å skrive et skript. Kjør GET, kopier verdien (de fleste klienter viser den som hex eller base64), lim inn her.

Dekode en cache-entry

Cacher som sikter mot små payloads — MessagePack, FlatBuffers, av og til rå protobuf — er overalt nå. Når den cachede bloben er msgpack og du må sammenligne den mot live-JSON, er dette raskeste vei til en rettferdig sammenligning.

Sjekk hva en klient faktisk sender

Du skrev en mobilklient som koder request-body-en med msgpack for å spare båndbredde. Du støter på en regresjon. Fang de ekte bytene (Charles, mitmproxy, network-fanen), lim inn og bekreft at feltnavn og verdier matcher skjemaet serveren forventer. Kunde Ava Chen, items SKU-101 × 2 — ja eller nei.

Vanlige spørsmål

Lastes bytene mine opp noe sted?

Nei. Dekodingen er ren JavaScript i nettleseren din — biblioteket @msgpack/msgpack leser input som Uint8Array, går gjennom wire-formatet og rendrer resultatobjektet som JSON. Ingen fetch, ingen analytics på input, ingenting forlater fanen. Behandle det som hvilket som helst lokalt CLI-verktøy.

Hex eller base64 — har det noe å si hva jeg limer inn?

Begge funker. Verktøyet prøver hex først (fordi hex med 0x- eller \x-prefikser, mellomrom eller kommaer er den vanligste loggformen), og faller tilbake til base64 hvis input ikke er gyldig hex. Har du en Python-byte-literal b'\x82\xa7order' dekodes også den — innpakningen b'...' fjernes og escapes utvides.

Hvorfor ser tidsstempler i output rare ut?

MessagePack har en innebygd timestamp extension type som biblioteket dekoder til en JS Date. Når det stringifies til JSON blir det en ISO 8601-streng. Ser du noe som "2026-05-05T12:34:56.000Z" i output, er det et ekte tidsstempel encoderen har lagt inn — ikke en bug.

Hva om input bare er delvis gyldig?

Dekoderen leser wire-formatet byte for byte. Sier et lengde-prefiks "neste er en 16-byte-streng" og bare 8 bytes er igjen, kaster den en parse-feil. Feilmeldingen i høyre panel forteller som regel hvilken type-token som feilet og omtrent hvor — det er normalt nok til å finne en avkappet liming eller en forvillet byte.

Klarer den binære blober (bin-familien)?

Ja. bin 8/bin 16/bin 32-verdier kommer tilbake som Uint8Array-instanser. JSON har ingen innebygd byte-type, så de rendres som {"0":1,"1":2,...} ved stringify. Trenger du spesifikt base64 for bin-feltene, dekod her først og transformer deretter med verktøyet vårt JSON til Base64.

Hvordan står det seg mot protobuf eller CBOR?

MessagePack er schemaløs (nøklene lever i bytene), CBOR ligner men har flere typer og en annen koding, og protobuf trenger et .proto-skjema for i det hele tatt å kunne dekode. Er bytene dine protobuf, vil dette verktøyet feile — prøv i stedet siden vår Protobuf til JSON. Er de CBOR er wire-formatet nært, men ikke det samme, så du trenger en CBOR-spesifikk dekoder.

Andre MessagePack-verktøy

MessagePack-verktøy som passer godt sammen med dette her — for å gå motsatt vei, validere, eller bare titte på bytene: