§

วาง JSON

§

ผลลัพธ์ที่บีบอัดแล้ว

text
§

ประหยัด %

  • ขนาดเดิม
  • ขนาดที่บีบอัด
  • ประหยัดได้
  • ประหยัด %

การย่อ JSON ให้เหลือรูปแบบที่ถูกต้องเล็กที่สุดให้ผลตอบแทนทุกที่ที่นับไบต์: mobile banking ของ KBank, SCB และ BBL ส่ง request หลายสิบล้านครั้งต่อวันจากแอปลูกค้า ระบบ PromptPay สำหรับการโอนเงินทันทีต้องการ payload กระชับเพื่อให้บริการตลอด 24 ชั่วโมง และเครือข่าย 5G IoT ของ AIS, dtac และ TrueMove H ส่ง telemetry เซ็นเซอร์โรงงานผ่านการเชื่อมต่อแบบคิดเงินตามปริมาณ คู่มือความปลอดภัย API ของ ETDA แนะนำให้ลดขนาดข้อมูลก่อนส่ง ในขณะที่กรอบ open banking ของ ธปท. กำหนดแบบสคีมา JSON สำหรับสมาชิก พอร์ทัล data.go.th เผยแพร่ชุดข้อมูลขนาดหลายกิกะไบต์ที่นักพัฒนาดาวน์โหลด และ Sea Group กับ Shopee Thailand ปรับ payload แคตาล็อกให้ผู้ใช้ในภูมิภาคได้รับการตอบสนองเร็วขึ้น

การบีบอัด JSON คืออะไร?

JSON (JavaScript Object Notation) คือรูปแบบการแลกเปลี่ยนข้อมูลแบบข้อความที่มีน้ำหนักเบา กำหนดโดย RFC 8259 และ ECMA-404 การบีบอัดจะลบช่องว่าง แท็บ และบรรทัดใหม่ทุกตัวที่อยู่นอกสตริงลิเทอรัล — ค่าต่าง ๆ จะถูกรักษาไว้ไบต์ต่อไบต์ มีเพียงช่องว่างเชิงรูปลักษณ์เท่านั้นที่ถูกลบออก ผลลัพธ์จะแยกวิเคราะห์ได้เป็นค่าเดียวกับอินพุตทุกประการ

การบีบอัด JSON ทำงานอย่างไร?

ข้อมูลของคุณถูกประมวลผลทั้งหมดในเบราว์เซอร์โดยใช้ฟังก์ชันในตัว JSON.parse และ JSON.stringify ขั้นตอนหลักคือ:

  1. อินพุตของคุณถูกอ่านจาก textarea ตามตัวอักษร — ทุกไบต์ที่คุณวางจะอยู่ในหน่วยความจำในเครื่อง
  2. เบราว์เซอร์แยกวิเคราะห์ด้วย JSON.parse หากอินพุตไม่ใช่ JSON ที่ถูกต้อง ตัวแยกวิเคราะห์จะโยน SyntaxError ที่ถูกจับและแสดงตามต้นฉบับ — ข้อความของคุณไม่เคยออกจากหน้าเว็บ
  3. เมื่อการแยกวิเคราะห์สำเร็จ ค่าที่แยกวิเคราะห์แล้วจะถูกปล่อยใหม่ด้วย JSON.stringify(value) — โดยไม่มีอาร์กิวเมนต์การเยื้อง — ให้ผลเป็นรูปแบบที่ถูกต้องที่สั้นที่สุดของค่าเดียวกัน
  4. ความยาวไบต์ของข้อความต้นฉบับและข้อความที่บีบอัดแล้วคำนวณด้วย new TextEncoder().encode(...).byteLength — จำนวนไบต์ UTF-8 เดียวกับที่เซิร์ฟเวอร์ HTTP จะเห็นบนสาย
  5. ผลลัพธ์ถูกเขียนลงใน textarea แบบอ่านอย่างเดียว แถบเมตริกรายงานส่วนต่างไบต์พร้อมเปอร์เซ็นต์ที่ประหยัด และปุ่มดาวน์โหลดบรรจุผลลัพธ์เป็นไฟล์ .min.json ที่คุณสามารถนำไปใช้ได้

ทำไมจึงบีบอัด JSON ด้วยเครื่องมือนี้?

  • ความเป็นส่วนตัว: ทุกครั้งที่แยกวิเคราะห์ บีบอัด และวัดเกิดขึ้นในเบราว์เซอร์ของคุณ JSON ไม่เคยถึงเซิร์ฟเวอร์ของเรา — ไม่อัปโหลด ไม่เก็บ telemetry ไม่ต้องมีบัญชี
  • ตัวเลขไบต์จริง: ขนาดเดิม ขนาดที่บีบอัดและค่าที่ประหยัดคำนวณด้วย TextEncoder เพื่อให้คุณเห็นส่วนต่างไบต์ UTF-8 จริงที่ CDN หรือ API gateway จะเรียกเก็บ
  • ไม่สูญเสียข้อมูล: การบีบอัดเป็นเชิงรูปลักษณ์ล้วน ๆ — ทุกค่าจะแยกวิเคราะห์เป็นต้นไม้ JSON เดียวกัน จึงปลอดภัยสำหรับ payload โปรดักชัน ไฟล์ manifest และ fixture ฝังตัว
  • รวดเร็ว: JSON.parse + JSON.stringify ดั้งเดิมจัดการ payload ขนาดคลิปบอร์ดได้ทันที โดยไม่ต้องโหลดไลบรารีภายนอก

การใช้งานทั่วไปของการบีบอัด JSON มีอะไรบ้าง?

การลบช่องว่างที่ไม่สำคัญออกจาก JSON ปรากฏในงานพัฒนาเว็บ วิศวกรรมข้อมูล และระบบฝังตัว:

  • ลด payload ของ API: ย่อเนื้อหา request และ response ก่อนผ่าน API gateway ที่คิดเงิน ลิงก์ egress ที่เสียค่าใช้จ่าย หรือลิงก์ดาวเทียม
  • ฝังใน HTML: ใส่ JSON blob ในแอตทริบิวต์ data-* หรือแท็ก <script type="application/json"> โดยไม่มีช่องว่าง pretty-printer หลุดเข้าหน้าที่แสดงผล
  • localStorage ที่เล็กลง: ลดการใช้โควต้า localStorage / IndexedDB ด้วยการเขียน JSON ที่บีบอัดแทน JSON ที่จัดรูปแบบสวย ๆ ซึ่งมีค่าเป็นพิเศษบนเบราว์เซอร์มือถือที่มีข้อจำกัดการเก็บข้อมูลต่อ origin

ตัวอย่างการบีบอัด JSON มีลักษณะอย่างไร?

การวางไฟล์ตั้งค่าขนาด 1.2 KB แบบจัดรูปแบบสวย (ประมาณ 1,225 ไบต์ด้วยการเยื้อง 2 ช่องว่าง) แล้วกด บีบอัด มักจะย่อมันลงเหลือต่ำกว่า 0.4 KB — ประหยัดได้ 66% — โดยทุกคีย์และค่ายังคงอยู่ครบถ้วน ไฟล์ output.min.json ที่ดาวน์โหลดได้เหมือนไบต์ต่อไบต์กับสิ่งที่เซิร์ฟเวอร์ HTTP จะส่งออกด้วย Content-Type: application/json และไม่มี middleware จัดรูปแบบใด ๆ

เครื่องมือนี้ทำงานในเบราว์เซอร์ของฉันหรือไม่?

ใช่ ขั้นตอนการบีบอัดเป็น JSON.parse + JSON.stringify ล้วน ๆ ที่ทำงานในแท็บเบราว์เซอร์ ไม่มีอะไรถูกอัปโหลด ไม่มี service worker ทำหน้าที่พร็อกซีอินพุตของคุณ และหน้าเว็บไม่ส่งคำขอเครือข่ายสำหรับขั้นตอนการบีบอัดเลย ลำเลียงออกเพียงอย่างเดียวคือทรัพยากรการโหลดหน้ามาตรฐาน (CSS, ฟอนต์, analytics) — JSON ของคุณไม่เคยถึง Ultim8Soft

ทำไมต้องบีบอัด JSON?

JSON ที่บีบอัดแล้วแยกวิเคราะห์เป็นค่าเดียวกับต้นฉบับที่จัดรูปแบบสวย ๆ แต่เล็กกว่าทั้งบนสายและในที่เก็บข้อมูล payload ที่เล็กลงหมายถึงบิล CDN egress ต่ำลง ดาวน์โหลดบนมือถือเร็วขึ้น แรงกดดันหน่วยความจำใน service worker น้อยลง และพอดีกว่ากับซองขนาดคงที่อย่าง JWT payload, HTML data-* attribute ฝังตัว และโควต้า localStorage สำหรับ API ปริมาณสูง การประหยัดไบต์ทบต้น — การลด 30% ที่ endpoint 1 GB/วัน ประหยัดประมาณ 9 GB ต่อเดือน

การบีบอัดทำให้ข้อมูลสูญหายหรือไม่?

ไม่ การบีบอัด JSON ลบเฉพาะช่องว่างที่อยู่ นอก สตริงลิเทอรัล — ช่องว่าง แท็บ และบรรทัดใหม่ที่สเปกได้จัดประเภทไว้แล้วว่าไม่มีนัยสำคัญ ทุกคีย์ ค่า ตัวเลข ลำดับ escape และอักขระสตริงยังถูกเก็บไว้ไบต์ต่อไบต์ ผลลัพธ์จะแยกวิเคราะห์เป็นค่าที่ deepEqual กับอินพุต มีเพียงการเยื้องเชิงรูปลักษณ์เท่านั้นที่หายไป

ตัวจัดรูปแบบกับตัวบีบอัดต่างกันอย่างไร?

เครื่องมือคู่หู JSON Formatter ไปในทิศทางตรงกันข้าม: ขยายช่องว่างเพื่อให้มนุษย์อ่านโครงสร้างซ้อนกันได้ ส่วน ตัวบีบอัด ลบช่องว่างนั้นออกอีกครั้งเพื่อการส่งและจัดเก็บ ทั้งสองเครื่องมือเป็นกลับด้านกัน — ส่งเอกสาร JSON ผ่าน Formatter → Minifier จะได้ไบต์สตริงเดียวกับที่คุณเริ่มต้นป้อนใน minifier เพราะทั้งคู่ทำงานบนค่าที่แยกวิเคราะห์แล้ว ไม่ใช่บนรูปแบบเชิงสายตา

ตัวบีบอัด JSON นี้ใช้ parser ตัวเดียวกับที่ runtime Node.js, Deno หรือเบราว์เซอร์ของคุณใช้ และให้ผลลัพธ์ที่เหมือนไบต์ต่อไบต์กับสิ่งที่เซิร์ฟเวอร์ HTTP เรียบ ๆ จะส่งออก วาง JSON ใด ๆ ด้านบน คัดลอกผลลัพธ์ หรือดาวน์โหลดเป็น .min.json