CBOR / MessagePack 코덱
JSON 입력
16진수 출력
기술적 세부 정보
CBOR 및 MessagePack 변환기가 작동하는 방식
도구가 하는 일
이 도구는 JSON 데이터를 CBOR(Concise Binary Object Representation) 또는 MessagePack 바이너리 형식으로 인코딩하고, 바이너리 페이로드를 사람이 읽을 수 있는 JSON으로 다시 디코딩합니다. 디코딩된 구조와 함께 원시 16진수 바이트를 나란히 표시하여, 제약된 환경에서 사용되는 컴팩트한 바이너리 인코딩을 쉽게 검사할 수 있습니다. 양방향 인코딩 모두 중첩 객체, 배열, 표준 JSON 타입을 지원합니다.
개발자들이 흔히 사용하는 사례
IoT 개발자는 역직렬화 코드를 작성하지 않고도 CoAP 메시지나 COSE 서명 토큰의 CBOR 페이로드를 검사하기 위해 이 도구를 사용합니다. 백엔드 엔지니어는 16진 덤프를 붙여넣고 디코딩된 JSON을 확인함으로써 MessagePack으로 인코딩된 WebSocket 프레임, Redis 프로토콜 버퍼, 또는 RPC 페이로드를 디버깅합니다. 또한 JSON, CBOR, MessagePack 간 페이로드 크기를 비교하여 대역폭이 제한된 시스템에 가장 효율적인 와이어 형식을 선택하는 데에도 유용합니다.
데이터 형식, 타입 또는 변형
CBOR(RFC 8949)는 작은 코드 크기와 작은 메시지 크기를 목표로 설계된 자기 기술적 바이너리 형식으로, LwM2M 및 FIDO2/WebAuthn 같은 IoT 표준에서 널리 채택되었습니다. MessagePack은 스키마 없이도 가능한 한 컴팩트하게 유지하는 것을 목표로 하는 유사한 바이너리 직렬화 형식으로, Redis, Fluentd, 그리고 많은 RPC 프레임워크에서 흔히 사용됩니다. 두 형식 모두 JSON보다 더 컴팩트하지만, 효율성을 위해 사람의 가독성을 희생합니다.
흔한 함정과 엣지 케이스
CBOR는 바이트 문자열, 태그, 무기한 길이 컨테이너처럼 JSON이 기본적으로 표현할 수 없는 데이터 타입을 지원합니다. 이를 JSON을 통해 왕복하면 타입 정보가 손실됩니다. MessagePack은 원시 바이트와 UTF-8 문자열을 구분하지만, JSON은 이를 단일 문자열 타입으로 합칩니다. 정수 정밀도도 달라질 수 있습니다. 두 형식 모두 임의 길이 정수를 지원하지만, JavaScript로 디코딩할 때 Number.MAX_SAFE_INTEGER를 넘으면 정밀도가 손실될 수 있습니다.
코드 대신 이 도구를 사용해야 하는 경우
네트워크 트래픽에서 캡처한 바이너리 페이로드를 임시로 검사하거나, IoT 디바이스 메시지를 디버깅하거나, 인코딩 크기를 빠르게 비교할 때는 이 브라우저 도구를 사용하세요. 애플리케이션 코드에서의 프로덕션 직렬화에는 Python의 cbor2, Node.js의 cbor-x, 또는 사용 중인 언어의 msgpack 같은 전용 라이브러리를 사용하세요. 이러한 라이브러리는 스트리밍, 스키마 검증, 그리고 브라우저 도구로는 제공할 수 없는 올바른 타입 매핑을 처리합니다.