JSON—JavaScript Object Notation—เป็นรูปแบบข้อความที่แพร่หลายสำหรับการแลกเปลี่ยนข้อมูลที่มีโครงสร้าง มันถูกกำหนดมาตรฐานโดยทั้ง IETF ในชื่อ RFC 8259 และโดย Ecma International ในชื่อ ECMA-404ซึ่งร่วมกันกำหนดไวยากรณ์ที่กะทัดรัดและไม่ขึ้นอยู่กับภาษาที่ขับเคลื่อน API, บันทึก, การกำหนดค่า และฐานข้อมูลสมัยใหม่
ค่า JSON คือ อ็อบเจกต์, อาร์เรย์, สตริง, ตัวเลข, หรือหนึ่งในค่าตามตัวอักษร true, false, หรือ null; อ็อบเจกต์จับคู่สตริงกับค่าและ อาร์เรย์เก็บค่าตามลำดับ—โดยอนุญาตให้มีช่องว่างที่ไม่สำคัญรอบๆ อักขระโครงสร้าง (RFC 8259, ECMA-404) แม้ว่า JSON จะมีต้นกำเนิดมาจาก JavaScript แต่ก็ ไม่ขึ้นอยู่กับภาษา และรองรับได้แทบทุกที่ (MDN: JSON) ในการส่งข้อมูล การเข้ารหัสโดยพฤตินัยและที่แนะนำคือ UTF-8 (RFC 8259 §8.1) เพื่อความปลอดภัยในการทำงานร่วมกันเพิ่มเติม โปรไฟล์ I-JSON (RFC 7493) จะเข้มงวดกฎเกี่ยวกับการเข้ารหัสและช่วงตัวเลข
ใน JavaScript อ็อบเจกต์ส่วนกลาง JSON เปิดเผยสองเครื่องมือหลัก:JSON.parse (พร้อม reviver ที่เป็นตัวเลือก) และ JSON.stringify (พร้อม replacer/spacing สำหรับการพิมพ์ที่สวยงาม) ตามที่บันทึกไว้ใน MDN (parse, stringify)
ไวยากรณ์ตัวเลขของ JSON เป็นทศนิยม แต่ข้อกำหนดไม่ได้กำหนดความแม่นยำหรือ ความแตกต่างระหว่างจำนวนเต็ม/จำนวนจริง การใช้งานเลือกว่าจะแสดงอย่างไร (RFC 8259 §6) ใน JavaScript และ Node.js Number คือความแม่นยำสองเท่าของ IEEE-754 ซึ่งหมายความว่าเฉพาะจำนวนเต็มในช่วง [−(2^53−1), 2^53−1] เท่านั้นที่ปลอดภัยอย่างแท้จริง—ดู Number.MAX_SAFE_INTEGER และประเภท BigIntนี่คือเหตุผลที่ API สาธารณะมักส่ง ID เป็นสตริงและตรวจสอบ "จำนวนเต็ม ที่ปลอดภัย" อย่างชัดเจน
เมื่อการใช ้งานเติบโตขึ้น มาตรฐานต่างๆ ก็เกิดขึ้นเพื่อ ระบุตำแหน่ง และ แก้ไข JSON ณ ที่นั้น JSON Pointer (RFC 6901) เป็นไวยากรณ์ขนาดเล็กที่คั่นด้วยเครื่องหมายทับสำหรับระบุตำแหน่งค่า (เช่น /a/b/0) พร้อมกฎการหลีกสำหรับ ~ และ / JSON Patch (RFC 6902) จำลองการอัปเดตบางส่วนเป็นการดำเนินการตามลำดับ (add, remove, replace, move, copy, test) และเดินทางเป็น application/json-patch+json สำหรับความแตกต่างที่ง่ายกว่า JSON Merge Patch (RFC 7386) ใช้การผสานรูปทรงเอกสาร: ฟิลด์ที่มีอยู่จะถูกเพิ่ม/แทนที่; การตั้งค่า ฟิลด์เป็น null จะลบมันออกไป หลายเฟรมเวิร์กรองรับรูปแบบใดรูปแบบหนึ่งหรือทั้งสอง รูปแบบตั้งแต่แกะกล่อง
JSON เองไม่มีสคีมา แต่ระบบนิเวศอาศัยสคีมาสำหรับการตรวจสอบ เอกสาร และการสร้างโค้ด ตระกูล JSON Schema 2020-12 ระบุข้อจำกัดเช่น type, properties, items, และคำหลัก σύνθεσης, และสอดคล้องกับ OpenAPI 3.1สำหรับเวิร์กโฟลว์ที่เน้นการสร้างโค้ด JSON Type Definition (RFC 8927) นำเสนอภาษาที่จงใจให้แสดงออกน้อยกว่าซึ่งจับคู่กับ ระบบประเภทหลักได้อย่างคาดเดาได้
JSON แบบคลาสสิกคาดหวังข้อความที่สมบูรณ์หนึ่งข้อความต่อเพย์โหลด ซึ่งทำให้ การสตรีมบันทึกและการตอบสนองที่ยาวนานซับซ้อนขึ้น สองรูปแบบช่วยได้:
application/json-seqเมื่อแบนด์วิดท์หรือความเร็วมีความสำคัญ รูปแบบ "JSON ไบนารี" จะรักษา โมเดลข้อมูลของ JSON ในขณะที่แลกเปลี่ยนความสามารถในการอ่านของมนุษย์เพื่อประสิทธิภาพ:
เนื่องจาก JSON เป็นเพียงข้อความ ความเสี่ยงส่วนใหญ่มาจากการที่คุณขนส่งและ จัดการมัน:
<script> พร้อมการเรียกกลับ) เป็นวิธีแก้ปัญหาชั่วคราวก่อน CORS สำหรับคำขอข้ามแหล่งที่มาแต่ อันตราย—มันรันสคริปต์ตามอำเภอใจ ควรใช้ CORS กับการตอบสนอง application/json จริง (OWASP: การใช้ JSONP ในทางที่ผิด)JSON เปิดตัวภายใต้ RFC 4627 (2006); ประเภทสื่อที่ลงทะเบียนคือ application/jsonซึ่งข้อกำหนดตอนนี้ชี้ไปที่ RFC 8259พารามิเตอร์ "charset" ในการตอบสนอง JSON โดยทั่วไปไม่จำเป็นเพราะ UTF-8 เป็นค่าเริ่มต้นบนอินเทอร์เน็ตสาธารณะ
นักพัฒนามักต้องการความคิดเห็น, เครื่องหมายจุลภาคต่อท้าย, หรือสตริงที่ล้อมรอบด้วยเครื่องหมายคำพูดเดี่ยว ในการกำหนดค่า นั่นอยู่นอกเหนือ JSON มาตรฐาน แต่ JSON5 ให้ชุดย่อยที่จัดทำเอกสารไว้อย่างดีสำหรับไฟล์ที่แก้ไขโดยมนุษย์ หลีกเลี่ยงการส่ง JSON5 ผ่าน API สาธารณะเว้นแต่คุณจะควบคุมทั้งสองฝ่าย
ความสำเร็จของ JSON มาจากพื้นที่ผิวขนาดเล็ก, การสนับสนุนภาษาที่กว้างขวาง, และ วงแหวนของมาตรฐานที่อยู่ติดกัน—พอยน์เตอร์, การแพตช์, สคีมา, ลำดับ—ที่ ครอบคลุมความเป็นจริงที่ยุ่งเหยิงของระบบกระจาย ทำความเข้าใจ พื้นฐาน (ไวยากรณ์, การเข้ารหัส, ตัวเลข), พึ่งพามาตรฐานที่อยู่ติดกันที่ ถูกต้อง, และมันจะยังคงให้ผลตอบแทนในสแต็กและบริการต่างๆ (RFC 8259, ECMA-404, RFC 6901, RFC 6902, RFC 7386, JSON Schema, JTD, RFC 7464, NDJSON)
JSON (JavaScript Object Notation) เป็นรูปแบบการแลกเปลี่ยนข้อมูลแบบเบาที่อ่านและเขียนง่ายสำหรับมนุษย์และแยกวิเคราะห์และสร้างง่ายสำหรับเครื่องจักร ใช้กันอย่างแพร่หลายในการส่งข้อมูลในแอปพลิเคชันเว็บ
การจัดรูปแบบ JSON ทำให้มนุษย์อ่านได้โดยการเพิ่มการเยื้องและการขึ้นบรรทัดใหม่ที่เหมาะสม สิ่งนี้มีประโยชน์อย่างยิ่งเมื่อทำงานกับข้อมูล JSON ที่ย่อหรือบีบอัด, การดีบัก, หรือการตรวจสอบการตอบสนอง API
การตรวจสอบความถูกต้อง JSON ตรวจสอบว่าสตริง JSON ของคุณเป็นไปตามข้อกำหนด JSON หรือไม่ มันระบุข้อผิดพลาดทางไวยากรณ์เช่นเครื่องหมายจุลภาคที่ขาดหายไป, วงเล็บที่ไม่ได้ปิด, หรือเครื่องหมายคำพูดที่ไม่เหมาะสม ช่วยให้คุณตรวจจับข้อผิดพลาดได้ตั้งแต่เนิ่นๆ
มุมมองโค้ดแสดง JSON ที่จัดรูปแบบเป็นข้อความพร้อมการเน้นไวยากรณ์ คล้ายกับที่ปรากฏในเครื่องมือแก้ไขโค้ด มุมมองแบบต้นไม้นำเสนอ JSON เป็นโครงสร้างแบบโต้ตอบที่ยุบได้ซึ่งคุณสามารถขยายและยุบอ็อบเจ็กต์และอาร์เรย์ที่ซ้อนกัน
ใช่! การจัดรูปแบบและตรวจสอบความถูกต้อง JSON ทั้งหมดเกิดขึ้นในเบราว์เซอร์ของคุณทั้งหมด ข้อมูลของคุณไม่เคยออกจากคอมพิวเตอร์ของคุณ รับประกัน ความเป็นส่วนตัวและความปลอดภัยอย่างสมบูรณ์
ได้ คุณสามารถอัปโหลดไฟล์ JSON โดยใช้ปุ่ม 'เปิดไฟล์' เครื่องมือจะอ่านไฟล์และแสดงผลลัพธ์ที่จัดรูปแบบทันที
ข้อผิดพลาด JSON ที่พบบ่อย ได้แก่: เครื่องหมายจุลภาคที่ขาดหายไประหว่างคู่คีย์-ค่า, การใช้เครื่องหมายคำพูดเดี่ยวแทนเครื่องหมายคำพูดคู่สำหรับสตริง, เครื่องหมายจุลภาคต่อท้าย, วงเล็บหรือวงเล็บปีกกาที่ไม่ได้ปิด, และคีย์ที่ไม่มีเครื่องหมายคำพูด
ได้ ใช้ปุ่ม 'คัดลอก' เพื่อคัดลอก JSON ที่จัดรูปแบบไปยังคลิปบอร์ดของคุณ สิ่งนี้มีประโยชน์สำหรับการวาง JSON ที่ทำความสะอาดแล้วลงในโค้ดหร ือเอกสารของคุณ