Input

Output

Cos'è il Validatore MessagePack?

Stai integrando un servizio che emette MessagePack e il formato wire continua a stupirti — numero di byte sbagliato, byte di coda strani, il parser muore in modo criptico senza dirti quale campo si è rotto. Questo strumento prende un dump hex o base64 di un payload MsgPack, lo passa attraverso un decoder vero, e ti dice cosa è effettivamente uscito dall'altra parte.

Mandiamo il tuo input attraverso il decoder di @msgpack/msgpack. Se viene parsato, ti diciamo il numero di byte, il tipo di livello superiore (map, array, string, int…), e la lunghezza di chiavi o array così puoi confrontare con lo schema che hai in testa. Se fallisce, mostriamo il messaggio di errore del parser così com'è — di solito punta proprio all'offset che si è rotto.

Hex e base64 vengono rilevati automaticamente. Spazi, virgole, prefissi 0x ed escape \xNN sono tollerati, quindi puoi incollare direttamente da una cattura di Wireshark, da un log del server, o da un dump repr() di Python. Niente lascia il tuo browser — il decoder gira in locale.

Come usare il Validatore MessagePack

Incollalo. Il validatore parte a ogni battuta (debounce di 300 ms) quindi non devi premere nessun bottone.

1

Incolla MsgPack hex o base64

Lascia cadere il tuo payload codificato nel pannello sinistro. Premi MsgPack di esempio per caricare un piccolo oggetto ordine codificato in hex — utile quando vuoi solo vedere com'è fatto un risultato valido. Il decoder segue la spec di MessagePack, quindi tutto ciò che un encoder conforme produce farà round-trip pulito. Hex di esempio (un singolo int 1):

01

Quello è il byte di wire per il fixint positivo 1. Payload più grandi — map, array, stringhe — iniziano con byte di formato come 0x800x9f (fixmap/fixarray) o 0xa00xbf (fixstr).

2

Leggi il report di validazione

Il pannello di destra si riempie automaticamente. In caso di successo ottieni un piccolo report — formato di input rilevato (hex o base64 secondo RFC 4648), numero di byte codificati, tipo di livello superiore, conteggio chiavi/array, più un'anteprima JSON del valore decodificato (troncata a 2 KB per tenere il pannello leggibile).

3

Indaga sui fallimenti

In caso di parse fallito il pannello destro mostra ✗ Invalid MessagePack seguito dalla stringa di errore del decoder. Quelli comuni: "Insufficient bytes" (il tuo hex è stato troncato), "Unrecognized type byte" (hai incollato per sbaglio JSON o testo, o l'input è corrotto) e "Extra bytes were found" (si è infilato un prefisso di lunghezza o un byte di framing). Pensa al flusso di byte sottostante come a un Uint8Array nella tua testa — la maggior parte dei fallimenti sono problemi di framing o lunghezza, non bug di codifica.

Quando lo useresti davvero

Debug di una cache miss

La tua chiave Redis contiene un ordine codificato in MessagePack (orderId: 'ORD-7421', items, customer) e il consumer lancia eccezioni nel deserializzare. Incolla l'hex da redis-cli --no-raw GET, vedi se il formato wire è almeno valido, e conferma che il tipo di livello superiore corrisponda a quello che il tuo decoder si aspetta.

Validare una cattura di rete

Hai catturato un frame dalla rete con Wireshark o tcpdump, esportato i byte, e vuoi sapere se il MsgPack dentro è ben formato prima di tracciare il framing a mano. Incolla, dai un'occhiata al tipo e al numero di byte, vai avanti.

Verificare un producer

Hai scritto un encoder custom in Go o Rust? Codifica una fixture nota ({sku: 'SKU-101', qty: 2}), dumpala in hex e incolla qui. Se la rileggiamo come la stessa map che hai scritto, il tuo encoder è conforme al formato MessagePack.

Pre-flight prima di un bug report

Apri una issue contro una libreria upstream? Conferma prima che il payload sia davvero MsgPack valido — metà dei report di "bug della libreria" sono input malformati. 30 secondi di paste qui ti risparmiano un giro di andata e ritorno.

Domande comuni

Il payload esce dal mio browser?

No. La decodifica gira in JavaScript su questa pagina usando il decoder @msgpack/msgpack. Niente viene caricato, loggato o mandato a un backend — chiudi la scheda e i dati spariscono. Stesso modello di un visualizzatore hex desktop, solo nel browser.

Accetta upload di file binari, o solo hex/base64?

Solo hex e base64. I browser non espongono i byte dei file alla pagina senza un selettore, e la maggior parte dei flussi di copia-incolla produce già hex (da xxd, hexdump -C, tooltip del debugger) o base64 (da risposte di API REST, righe di log). Se hai un file .msgpack grezzo, lancia prima xxd -p file.msgpack o base64 file.msgpack.

Come distingue hex da base64?

Hex viene rilevato per primo: se l'input (dopo aver tolto spazi, virgole, prefissi 0x e sequenze di escape \xNN) è tutto fatto di caratteri hex e di lunghezza pari, lo trattiamo come hex. Altrimenti lo passiamo ad atob come base64. La riga "Detected input format" nel report ti dice quale strada è stata presa — utile quando una stringa ambigua come deadbeef capita di essere valida in entrambe le codifiche.

Perché a volte dice "Extra bytes were found"?

Gli stream MessagePack devono essere esattamente un valore di livello superiore. Se hai incollato un frame con prefisso di lunghezza (es. una lunghezza big-endian a 4 byte aggiunta da un protocollo di trasporto a framing) o due payload concatenati, il decoder legge il primo valore e si lamenta del resto. Taglia il framing o spezza in messaggi singoli.

Decodifica le estensioni MessagePack (timestamp, tipi custom)?

Il decoder default @msgpack/msgpack gestisce di base il tipo di estensione timestamp incorporato (-1) e lo mostra come Date JS nell'anteprima. I tipi di estensione personalizzati (da 0 a 127) decodificano in una forma generica {type, data} — il validatore segnalerà comunque il payload come valido, ma ti servirà il tuo ExtensionCodec per interpretare i contenuti.

Qual è la differenza tra questo e il MessagePack Viewer?

Il Viewer serve a sfogliare — mostra una scomposizione ad albero di ogni chiave e valore. Questo Validatore risponde alla domanda "è almeno valido?" — sì/no rapido più numero di byte e tipo di livello superiore. Se il validatore dice che parsa e il tipo è giusto, passa al Viewer per leggere davvero il contenuto.

Altri strumenti MessagePack

Una volta confermato che il payload è valido, questi strumenti portano a termine il lavoro: