Walidator MessagePack
Wklej MessagePack jako hex lub base64 i sprawdź, czy parsuje się czysto. Pokazuje liczbę bajtów, typ najwyższego poziomu, a w razie błędu komunikat parsera dosłownie.
Wejście
Wyjście
Czym jest Walidator MessagePack?
Integrujesz się z usługą emitującą MessagePack, a format wire wciąż cię zaskakuje — zła liczba bajtów, dziwne bajty na końcu, parser umiera w sposób kryptyczny bez wskazówki, które pole padło. To narzędzie bierze hex lub base64 dump payloadu MsgPack, przepuszcza go przez prawdziwy dekoder i mówi ci, co naprawdę wyszło z drugiej strony.
Przepuszczamy twój input przez dekoder @msgpack/msgpack. Jeśli się parsuje, podajemy liczbę bajtów, typ najwyższego poziomu (map, array, string, int…) oraz długość kluczy lub tablicy, żebyś mógł zweryfikować to ze schematem, który masz w głowie. Jeśli się nie udaje, wyświetlamy komunikat błędu parsera dosłownie — zwykle wskazuje wprost na offset, który padł.
Hex i base64 są wykrywane automatycznie. Białe znaki, przecinki, prefiksy 0x oraz sekwencje \xNN są tolerowane, więc możesz wkleić bezpośrednio z przechwycenia Wiresharka, logu serwera lub pythonowego dumpa repr(). Nic nie opuszcza twojej przeglądarki — dekoder działa lokalnie.
Jak korzystać z Walidatora MessagePack
Wklej i tyle. Walidator uruchamia się przy każdym naciśnięciu klawisza (debounce 300 ms), więc nie musisz klikać żadnego przycisku.
Wklej hex lub base64 MsgPack
Wrzuć swój zakodowany payload do lewego panelu. Naciśnij Przykładowy MsgPack, aby załadować mały obiekt zamówienia zakodowany jako hex — przydatne, gdy chcesz po prostu zobaczyć, jak wygląda prawidłowy wynik. Dekoder podąża za specyfikacją MessagePack, więc wszystko, co wyprodukował zgodny encoder, przejdzie czysty round-trip. Przykładowy hex (pojedyncze int 1):
01To bajt wire dla dodatniego fixint 1. Większe payloady — mapy, tablice, stringi — zaczynają się od bajtów formatu, takich jak 0x80–0x9f (fixmap/fixarray) lub 0xa0–0xbf (fixstr).
Przeczytaj raport walidacji
Prawy panel wypełnia się automatycznie. Przy sukcesie dostajesz mały raport — wykryty format wejściowy (hex lub base64 wg RFC 4648), liczba zakodowanych bajtów, typ najwyższego poziomu, liczba kluczy/elementów tablicy, plus podgląd JSON zdekodowanej wartości (skrócony do 2 KB, żeby panel pozostał czytelny).
Zbadaj niepowodzenia
Przy błędzie parsowania prawy panel pokazuje ✗ Invalid MessagePack, a dalej tekst błędu z dekodera. Typowe: "Insufficient bytes" (twój hex został przycięty), "Unrecognized type byte" (przez pomyłkę wkleiłeś JSON lub tekst, albo input jest uszkodzony) i "Extra bytes were found" (wśliznął się prefiks długości lub bajt framingu). Traktuj w głowie strumień bajtów jako Uint8Array — większość niepowodzeń to problemy z framingiem lub długością, nie bugi kodowania.
Kiedy faktycznie tego użyjesz
Debugowanie cache miss
Twój klucz Redis trzyma zamówienie zakodowane w MessagePack (orderId: 'ORD-7421', items, customer), a konsument rzuca wyjątkami przy deserializacji. Wklej hex z redis-cli --no-raw GET, sprawdź, czy format wire jest w ogóle prawidłowy, i potwierdź, że typ najwyższego poziomu zgadza się z tym, czego oczekuje twój dekoder.
Walidacja przechwycenia ruchu
Złapałeś frame z sieci za pomocą Wiresharka albo tcpdump, wyeksportowałeś bajty i chcesz wiedzieć, czy MsgPack w środku jest dobrze sformowany, zanim ręcznie prześledzisz framing. Wklej, rzuć okiem na typ i liczbę bajtów, jedź dalej.
Zdrowy rozsądek dla producenta
Napisałeś własny encoder w Go lub Rust? Zakoduj znaną fixture ({sku: 'SKU-101', qty: 2}), zrzuć jako hex i wklej tutaj. Jeśli odczytamy z powrotem tę samą mapę, którą zapisałeś, twój encoder jest zgodny z formatem MessagePack.
Pre-flight przed bug reportem
Otwierasz issue przeciwko upstreamowej bibliotece? Najpierw potwierdź, że payload to faktycznie prawidłowy MsgPack — połowa raportów typu "bug w bibliotece" to źle sformowany input. 30-sekundowe wklejenie tutaj oszczędza ci jednej rundy w tę i z powrotem.
Częste pytania
Czy payload opuszcza moją przeglądarkę?
Nie. Dekodowanie odbywa się w JavaScripcie na tej stronie z użyciem dekodera @msgpack/msgpack. Nic nie jest wgrywane, logowane ani wysyłane do backendu — zamknij kartę i dane znikają. Ten sam model, co desktopowy podgląd hex, tylko w przeglądarce.
Czy przyjmuje wgrywanie plików binarnych, czy tylko hex/base64?
Tylko hex i base64. Przeglądarki nie udostępniają stronie bajtów pliku bez file pickera, a większość workflowów copy-paste i tak produkuje już hex (z xxd, hexdump -C, podpowiedzi debuggera) albo base64 (z odpowiedzi REST API, linijek logu). Jeśli masz surowy plik .msgpack, najpierw uruchom xxd -p file.msgpack albo base64 file.msgpack.
Jak rozpoznaje hex od base64?
Hex jest wykrywany jako pierwszy: jeśli input (po usunięciu białych znaków, przecinków, prefiksów 0x i sekwencji \xNN) składa się wyłącznie ze znaków hex i ma parzystą długość, traktujemy go jako hex. W przeciwnym razie przekazujemy do atob jako base64. Linia "Detected input format" w raporcie mówi, którą ścieżką poszliśmy — przydatne, gdy niejednoznaczny string typu deadbeef okazuje się prawidłowy w obu kodowaniach.
Czemu czasem mówi "Extra bytes were found"?
Strumienie MessagePack powinny być dokładnie jedną wartością najwyższego poziomu. Jeśli wkleiłeś frame z prefiksem długości (np. 4-bajtową długość big-endian dodaną przez framing transportu) lub dwa sklejone payloady, dekoder czyta pierwszą wartość i narzeka na resztę. Odetnij framing albo rozdziel na pojedyncze wiadomości.
Czy dekoduje rozszerzenia MessagePack (timestamp, typy custom)?
Domyślny dekoder @msgpack/msgpack obsługuje wbudowany typ rozszerzenia timestamp (-1) od ręki i pokazuje go jako Date JS w podglądzie. Niestandardowe typy rozszerzeń (0–127) dekodują się do generycznej formy {type, data} — walidator nadal zgłosi payload jako prawidłowy, ale do interpretacji zawartości potrzebujesz własnego ExtensionCodec.
Jaka jest różnica między tym a MessagePack Viewerem?
Viewer służy do przeglądania — pokazuje drzewiasty rozkład każdego klucza i wartości. Ten walidator odpowiada na pytanie "czy to w ogóle jest prawidłowe?" — szybkie tak/nie plus liczba bajtów i typ najwyższego poziomu. Jeśli walidator mówi, że parsuje, a typ jest dobry, przełącz się na Viewer, żeby naprawdę przeczytać zawartość.
Inne narzędzia MessagePack
Gdy potwierdzisz, że payload jest prawidłowy, te narzędzia poprowadzą cię dalej: