Wejście

Wyjście

Czym jest MessagePack do JSON?

Twój sidecar gRPC loguje ciało żądania jako długi string hex i potrzebujesz naprawdę zobaczyć, co tam siedzi. Albo Redis zwrócił wartość, którą poprzedni serwis zapisał jako msgpack i terminal pokazuje \x82\xa7orderId\xa8ORD-7421. MessagePack to kompaktowy format binarny — świetny w przewodzie, nieczytelny w linijce loga. Ta strona bierze dump w hex lub base64 i oddaje ci JSON, który ten dump reprezentuje.

Dekodowanie idzie zgodnie z oficjalną specyfikacją wire-formatu MessagePack przez bibliotekę JavaScript @msgpack/msgpack. Mapy stają się obiektami, tablice tablicami, inty i floaty dekodują się prosto na liczby JSON, a wynik jest ładnie sformatowany zgodnie z RFC 8259. Hex z prefiksami 0x, escape'y \x, spacje czy przecinki — wszystko parsuje się bez problemu. A jeśli wejście jest base64 (zgodnie z RFC 4648), wykrywamy to automatycznie.

Bez uploadu, bez backendu, bez logów. Dekodowanie chodzi w przeglądarce jako zwykły Uint8Array — zamknij kartę, bajty znikają.

Jak używać MessagePack do JSON

Wklej, czytaj, kopiuj. Nie ma przycisku Konwertuj — prawy panel aktualizuje się przy pisaniu, z debounce 300 ms, żeby nie przeliczał przy każdym uderzeniu klawisza.

1

Wklej hex lub base64

Wrzuć bajty MessagePack do edytora po lewej. Akceptujemy wszystko — czysty hex (82a7...), hex ze spacjami (82 a7 6f), pythonowe literały bajtów z \x, albo bloba w base64. Wciśnij Przykład, żeby załadować payload śledzenia zamówienia, który dekoduje się do realnego obiektu.

82a76f72646572496441 4f52442d3734323120a574 6f74616c cb4056600000000000

Ten fragment to kawałek payloadu Order — orderId, total, items, customer. Po dekodowaniu odzyskujesz całą strukturę jako JSON.

2

Czytaj JSON po prawej

Prawy panel dekoduje od nowa przy każdej zmianie. Jeśli bajty są poprawnym MessagePack, widzisz obiekt. Jeśli są obcięte, doklejone śmieciem albo to inny format (CBOR, BSON), panel pokazuje błąd parsera — zazwyczaj wystarczy, żeby namierzyć, gdzie wejście jest niepoprawne.

3

Skopiuj, czego potrzebujesz

Wciśnij przycisk Kopiuj po stronie wyjścia, żeby wziąć JSON. Wsadź go do fixture testu jednostkowego, wklej do ticketu, albo przepuść przez nasz Formatter JSON, jeśli chcesz inny styl. Żeby pójść w drugą stronę (obiekt → msgpack), użyj JSON do MessagePack.

Kiedy faktycznie się przyda

Czytanie ciała loga z gRPC lub sidecara

Sidecar service mesh wypluwa ciała żądań w hex. Ciało jest msgpack, bo tak serializuje serwis nadawca. Wklej hex, zobacz obiekt, dowiedz się, że wywołanie miało orderId: "ORD-7421" i total: 89.50, zamiast zgadywać.

Sprawdzenie wartości w Redis

Zapisałeś obiekt w Redis kodekiem msgpack, żeby zaoszczędzić miejsce. Teraz chcesz wiedzieć, co siedzi w session:42 bez pisania skryptu. Odpal GET, skopiuj wartość (większość klientów pokazuje ją w hex lub base64), wklej tutaj.

Dekodowanie wpisu w cache

Cache'e celujące w małe payloady — MessagePack, FlatBuffers, czasem surowy protobuf — są dziś wszędzie. Kiedy zapisany blob jest msgpack, a chcesz porównać go z żywym JSON-em, to najszybsza droga do uczciwego porównania.

Sprawdzenie, co naprawdę wysyła klient

Napisałeś klienta mobilnego, który koduje ciało żądania msgpack-iem, żeby oszczędzić pasmo. Trafiłeś na regresję. Złap prawdziwe bajty (Charles, mitmproxy, zakładka network), wklej i sprawdź, czy nazwy pól i wartości pasują do schematu, którego oczekuje serwer. Klient Ava Chen, pozycje SKU-101 × 2 — tak czy nie.

Najczęstsze pytania

Czy moje bajty są gdziekolwiek wysyłane?

Nie. Dekodowanie to czysty JavaScript w twojej przeglądarce — biblioteka @msgpack/msgpack czyta wejście jako Uint8Array, przechodzi wire format i renderuje wynikowy obiekt jako JSON. Żadnego fetcha, żadnego analytics na wejściu, nic nie opuszcza karty. Traktuj jak każde lokalne narzędzie CLI.

Hex czy base64 — robi różnicę, co wkleję?

Działa jedno i drugie. Narzędzie najpierw próbuje hex (bo hex z prefiksami 0x lub \x, spacjami albo przecinkami to najczęstsza forma w logach) i schodzi na base64, jeśli wejście nie jest poprawnym hex-em. Jeśli masz pythonowy literał bajtów b'\x82\xa7order', to też się zdekoduje — opakowanie b'...' zostanie zdjęte, a escape'y rozwinięte.

Dlaczego znaczniki czasu wyglądają w wyjściu dziwnie?

MessagePack ma wbudowany timestamp extension type, który biblioteka dekoduje do JS-owego Date. Po stringify do JSON to robi się stringiem ISO 8601. Jeśli widzisz coś jak "2026-05-05T12:34:56.000Z", to prawdziwy znacznik czasu, który osadził encoder — to nie bug.

Co, jeśli wejście jest tylko częściowo poprawne?

Dekoder czyta wire format bajt po bajcie. Jeśli prefiks długości mówi „następny jest 16-bajtowy string”, a zostało tylko 8 bajtów, leci błąd parsowania. Komunikat błędu w prawym panelu zwykle podpowiada, na którym tokenie typu padło i mniej więcej gdzie — to z reguły wystarczy, żeby wyłapać obcięte wklejenie albo zabłąkany bajt.

Czy obsługuje binarne bloby (rodzina bin)?

Tak. Wartości bin 8/bin 16/bin 32 wracają jako instancje Uint8Array. JSON nie ma natywnego typu na bajty, więc po stringify renderują się jako {"0":1,"1":2,...}. Jeśli akurat potrzebujesz base64 dla pól bin, najpierw zdekoduj tutaj, a potem przekształć naszym narzędziem JSON do Base64.

Jak to wypada przy protobuf albo CBOR?

MessagePack jest bez schemy (klucze siedzą w bajtach), CBOR jest podobny, ale ma więcej typów i inne kodowanie, a protobuf w ogóle wymaga schematu .proto do dekodowania. Jeśli twoje bajty to protobuf, to narzędzie polegnie — spróbuj naszej strony Protobuf do JSON. Jeśli to CBOR, wire format jest bliski, ale nie ten sam, więc potrzebujesz dekodera dedykowanego dla CBOR.

Inne narzędzia MessagePack

Narzędzia MessagePack, które dobrze pasują do tego — żeby pójść w drugą stronę, zwalidować albo po prostu spojrzeć na bajty: