CBOR / MessagePack kodek
JSON unos
Heks izlaz
Tehnički detalji
Kako radi konvertor za CBOR i MessagePack
Šta alat radi
Ovaj alat kodira JSON podatke u CBOR (Concise Binary Object Representation) ili MessagePack binarne formate i dekodira binarne payload-ove nazad u ljudima čitljiv JSON. Prikazuje sirove heks bajtove uporedo sa dekodiranom strukturom, što olakšava pregled kompaktnih binarnih kodiranja koja se koriste u okruženjima sa ograničenim resursima. Oba smera kodiranja podržavaju ugnježdene objekte, nizove i standardne JSON tipove.
Uobičajeni slučajevi upotrebe za programere
IoT programeri koriste ovaj alat da pregledaju CBOR payload-ove iz CoAP poruka ili COSE-potpisanih tokena bez pisanja koda za deserijalizaciju. Backend inženjeri otklanjaju greške u MessagePack-kodiranim WebSocket frejmovima, Redis protokol baferima ili RPC payload-ovima tako što nalepe heks dump-ove i pregledaju dekodirani JSON. Takođe je koristan za poređenje veličina payload-a između JSON-a, CBOR-a i MessagePack-a kako bi se izabrao najefikasniji wire format za sisteme sa ograničenim protokom/bandwidth-om.
Formati podataka, tipovi ili varijante
CBOR (RFC 8949) je samoopisujući binarni format dizajniran za malu veličinu koda i malu veličinu poruke, široko usvojen u IoT standardima kao što su LwM2M i FIDO2/WebAuthn. MessagePack je slična binarna serijalizacija koja teži da bude što kompaktnija, uz zadržavanje rada bez šeme, i često se koristi u Redis-u, Fluentd-u i mnogim RPC okvirima. Oba formata su kompaktnija od JSON-a, ali žrtvuju ljudsku čitljivost zarad efikasnosti.
Uobičajene greške i rubni slučajevi
CBOR podržava tipove podataka koje JSON ne može nativno da predstavi, kao što su bajt stringovi, tagovi i kontejneri neodređene dužine — round-trip kroz JSON će izgubiti informacije o tipu. MessagePack pravi razliku između sirovih bajtova i UTF-8 stringova, što JSON svodi na jedan tip stringa. Preciznost celih brojeva može da se razlikuje: oba formata podržavaju celobrojne vrednosti proizvoljne dužine, ali dekodiranje u JavaScript može izgubiti preciznost iznad Number.MAX_SAFE_INTEGER.
Kada koristiti ovaj alat umesto koda
Koristite ovaj alat u pregledaču za ad-hoc pregled binarnih payload-ova uhvaćenih iz mrežnog saobraćaja, debagovanje poruka IoT uređaja ili brzo poređenje veličina kodiranja. Za produkcionu serijalizaciju u aplikacionom kodu, koristite namenske biblioteke kao što su cbor2 (Python), cbor-x (Node.js) ili msgpack za vaš jezik, koje obezbeđuju strimovanje, validaciju šeme i pravilno mapiranje tipova, što alat u pregledaču ne može da pruži.