DevToys Web Pro iconDevToys Web Proบล็อก
ให้คะแนนเรา:
ลองใช้ส่วนขยายเบราว์เซอร์:

โค้เดก CBOR / MessagePack

รูปแบบ:
ทิศทาง:
เอาต์พุต:

อินพุต JSON

  • เอาต์พุต Hex

  • รายละเอียดทางเทคนิค

    ตัวแปลง CBOR และ MessagePack ทำงานอย่างไร

    เครื่องมือนี้ทำอะไร

    เครื่องมือนี้เข้ารหัสข้อมูล JSON เป็นรูปแบบไบนารี CBOR (Concise Binary Object Representation) หรือ MessagePack และถอดรหัสเพย์โหลดไบนารีกลับเป็น JSON ที่มนุษย์อ่านได้ โดยจะแสดงไบต์เฮกซ์ดิบควบคู่กับโครงสร้างที่ถอดรหัสแล้ว ทำให้ง่ายต่อการตรวจสอบการเข้ารหัสไบนารีแบบกะทัดรัดที่ใช้ในสภาพแวดล้อมที่มีข้อจำกัด ทั้งสองทิศทางของการเข้ารหัสรองรับออบเจ็กต์ซ้อน อาร์เรย์ และชนิดข้อมูล JSON มาตรฐาน

    กรณีการใช้งานทั่วไปของนักพัฒนา

    นักพัฒนา IoT ใช้เครื่องมือนี้เพื่อตรวจสอบเพย์โหลด CBOR จากข้อความ CoAP หรือโทเค็นที่ลงนามด้วย COSE โดยไม่ต้องเขียนโค้ดสำหรับดีซีเรียลไลซ์ วิศวกรแบ็กเอนด์ใช้ดีบักเฟรม WebSocket ที่เข้ารหัสด้วย MessagePack บัฟเฟอร์โปรโตคอลของ Redis หรือเพย์โหลด RPC ด้วยการวางเฮกซ์ดัมป์แล้วดู JSON ที่ถอดรหัสได้ นอกจากนี้ยังมีประโยชน์สำหรับการเปรียบเทียบขนาดเพย์โหลดระหว่าง JSON, CBOR และ MessagePack เพื่อเลือกรูปแบบการส่งผ่าน (wire format) ที่มีประสิทธิภาพที่สุดสำหรับระบบที่มีข้อจำกัดด้านแบนด์วิดท์

    รูปแบบข้อมูล ชนิด หรือรูปแบบย่อย

    CBOR (RFC 8949) เป็นรูปแบบไบนารีแบบอธิบายตัวเอง (self-describing) ที่ออกแบบมาให้ใช้โค้ดขนาดเล็กและข้อความขนาดเล็ก และได้รับการยอมรับอย่างแพร่หลายในมาตรฐาน IoT เช่น LwM2M และ FIDO2/WebAuthn ส่วน MessagePack เป็นการซีเรียลไลซ์แบบไบนารีที่คล้ายกัน โดยมุ่งให้กะทัดรัดที่สุดเท่าที่จะเป็นไปได้ในขณะที่ยังคงไม่ต้องมีสคีมา (schema-free) และมักใช้โดย Redis, Fluentd และเฟรมเวิร์ก RPC จำนวนมาก ทั้งสองรูปแบบกะทัดรัดกว่า JSON แต่แลกกับความสามารถในการอ่านของมนุษย์เพื่อประสิทธิภาพ

    ข้อผิดพลาดที่พบบ่อยและกรณีขอบ

    CBOR รองรับชนิดข้อมูลที่ JSON ไม่สามารถแทนได้โดยตรง เช่น สตริงไบต์ แท็ก และคอนเทนเนอร์แบบความยาวไม่กำหนด — การแปลงไป-กลับผ่าน JSON จะทำให้ข้อมูลชนิด (type information) สูญหาย MessagePack แยกความแตกต่างระหว่างไบต์ดิบกับสตริง UTF-8 ซึ่ง JSON จะรวมเป็นชนิดสตริงเดียว ความแม่นยำของจำนวนเต็มอาจแตกต่างกัน: ทั้งสองรูปแบบรองรับจำนวนเต็มความยาวตามต้องการ แต่การถอดรหัสเป็น JavaScript อาจสูญเสียความแม่นยำเมื่อเกิน Number.MAX_SAFE_INTEGER

    เมื่อใดควรใช้เครื่องมือนี้แทนการเขียนโค้ด

    ใช้เครื่องมือบนเบราว์เซอร์นี้สำหรับการตรวจสอบเพย์โหลดไบนารีแบบเฉพาะกิจที่จับมาจากทราฟฟิกเครือข่าย การดีบักข้อความจากอุปกรณ์ IoT หรือการเปรียบเทียบขนาดการเข้ารหัสอย่างรวดเร็ว สำหรับการซีเรียลไลซ์ในโปรดักชันภายในโค้ดแอปพลิเคชัน ให้ใช้ไลบรารีเฉพาะทาง เช่น cbor2 (Python), cbor-x (Node.js) หรือ msgpack สำหรับภาษาของคุณ ซึ่งรองรับสตรีมมิง การตรวจสอบความถูกต้องของสคีมา และการแมปชนิดข้อมูลอย่างเหมาะสมที่เครื่องมือบนเบราว์เซอร์ไม่สามารถให้ได้