รูปแบบ JSON

รูปแบบ JSON

รูปแบบ JSON

JSON เป็นรูปแบบการแลกเปลี่ยนข้อมูลแบบข้อความ ซึ่งหมายความว่าอ่านง่ายทั้งสำหรับบุคคลและโปรแกรม ชื่อของมันสอดคล้องกับตัวย่อภาษาอังกฤษของ สัญกรณ์วัตถุ JavaScript และได้มาตรฐานดังนี้ ECMA-404. แม้ว่ามันจะเป็นรูปแบบที่ใกล้เคียงกันมากก็ตาม JavaScriptเนื่องจากเป็นเรื่องง่ายมากที่จะประมวลผลในการเข้ารหัสข้อมูลอ็อบเจ็กต์หรือรับข้อมูล จึงยังใช้ในภาษาการเขียนโปรแกรมอื่นๆ อีกหลายภาษา (C, C + +, ชวา, หลาม...) เป็นอีกทางเลือกหนึ่ง เช่น ไปยัง XML ซึ่งมีวัตถุประสงค์คล้ายกัน แต่เนื่องจากมีข้อมูลเมตามากกว่า จึงต้องการข้อความมากกว่า ดังนั้นจึงใช้พื้นที่มากขึ้น ใช้แบนด์วิธมากขึ้นและต้องการทรัพยากรมากขึ้นในการเข้ารหัสและถอดรหัส ข้อมูลที่มีอยู่ JSON.

สารบัญ

    ข้อมูลของวัตถุที่เข้ารหัส JSON อยู่ภายในวงเล็บปีกกา คุณสมบัติต่างๆ ที่รวมอยู่ในคุณสมบัติจะถูกคั่นด้วยเครื่องหมายจุลภาค และชื่อคุณสมบัติอยู่ข้างหน้าค่า โดยคั่นด้วยเครื่องหมายทวิภาค

    โครงร่างของไวยากรณ์ของออบเจ็กต์ในรูปแบบ JSON

    ชื่อคุณสมบัติจะต้องอยู่ในเครื่องหมายคำพูดโดยใช้เครื่องหมายคำพูดคู่ (แม้ว่า parsers บางตัวจะสนับสนุนเครื่องหมายคำพูดเดี่ยว) และแม้ว่าอักขระพิเศษบางตัวจะได้รับอนุญาตสำหรับชื่อ (เช่น เครื่องหมายเน้นเสียง) ก็ไม่แนะนำให้หลีกเลี่ยงเกณฑ์ของกลไกการวิเคราะห์บางตัว และ หลีกเลี่ยงข้อขัดแย้งเมื่อใช้คุณสมบัติโดยเฉพาะกับไวยากรณ์ dot (object.property)

    ในตัวอย่างด้านบน คุณจะเห็นออบเจ็กต์ที่มีคุณสมบัติหกประการที่มีค่าแบบง่าย ตัวเลข บูลีน หรือข้อความ แต่ในรูปแบบ JSONคุณสมบัติยังสามารถได้รับเป็นค่าวัตถุ (รวมถึง "วัตถุพิเศษ" null) หรืออาร์เรย์นอกเหนือจากสตริงข้อความ (ข้อความในเครื่องหมายคำพูด) ตัวเลข (ในรูปแบบที่แตกต่างกัน) หรือค่าบูลีน (จริงหรือเท็จ ).

    เช่นเดียวกับภาษา JavaScript (JSON เป็นเซตย่อยของ JavaScript) เพื่อแสดงเมทริกซ์ ค่าของเมทริกซ์จะอยู่ในวงเล็บเหลี่ยมและคั่นด้วยเครื่องหมายจุลภาค กรณีที่ง่ายที่สุดแสดงไว้ในตัวอย่างด้านล่าง เป็นอาร์เรย์หนึ่งมิติ ซึ่งเป็นเวกเตอร์ ที่ประกอบด้วยค่าตัวเลข

    En JavaScript ไม่จำเป็นที่องค์ประกอบทั้งหมดของอาร์เรย์จะต้องเป็นประเภทเดียวกัน ตัวอย่างเช่น สามารถผสมสตริงข้อความและค่าตัวเลขได้ เวกเตอร์ซึ่งเป็นอาร์เรย์หนึ่งมิติสามารถเป็นหนึ่งในองค์ประกอบของอาร์เรย์อื่นได้ ทำให้สามารถสร้างอาร์เรย์หลายมิติที่มีความยาวแปรผันได้ ตัวอย่างต่อไปนี้แสดงวัตถุที่มีคุณสมบัติสามประการ: อันแรกเป็นอาร์เรย์สองมิติที่มีความยาวคงที่ ความยาวตัวแปรที่สอง และอันที่สามสร้างขึ้นโดยอาร์เรย์ที่มีค่าประเภทต่างกัน

    ตัวอย่างต่อไปนี้ใช้วัตถุอื่นเป็นค่าสำหรับคุณสมบัติของวัตถุหลัก ไม่มีการจำกัดระดับของการซ้อน ดังนั้น ในทางกลับกัน วัตถุที่เป็นค่าคุณสมบัติของพาเรนต์ก็สามารถมีวัตถุอื่นเป็นค่าทรัพย์สินของมันได้ และอื่นๆ

    เช่นเดียวกับที่มันเกิดขึ้นด้วย JavaScriptรหัส Escape ใช้เพื่อรวมอักขระบางตัวภายในสตริงข้อความ วิธีทั่วไปที่สุดคือการใช้โค้ดยูนิโค้ดที่แสดงด้วยแถบ Escape ตัวอักษร u และเลขฐานสิบหกสี่หลักที่มีรูปแบบ "\u263A" เพื่ออ้างถึง ☺ เช่น

    อักขระมาตรฐานที่มีอยู่ในภาษาส่วนใหญ่ (คล้ายกับ C) มีดังต่อไปนี้

    • เสื่อมถอยหลัง \b รหัส ASCII 8 (0x08)
    • Tabulator \t รหัส ASCII 9 (0x09) โดยปกติจะแสดงเป็น HT (ตัวตารางแนวนอน)
    • บรรทัดใหม่ \n รหัส ASCII 10 (0x0A) โดยปกติจะแสดงเป็น LF (ตัวป้อนบรรทัด)
    • หน้าใหม่ \f รหัส ASCII 12 (0x0C) โดยปกติจะแสดงเป็น FF (ฟีดแบบฟอร์ม)
    • กลับ \r รหัส ASCII 13 (0x0D) โดยปกติจะแสดงเป็น CR (การคืนแคร่)
    • อัญประกาศ \" รหัส ASCII 34 (0x22)
    • แถบแยก \/ รหัส ASCII 57 (0x2F)
    • แบ็กสแลช \\ รหัส ASCII 134 (0x5C)
    • รหัสยูนิโค้ด \uXXXX

    ที่ได้มาจาก C (และเกี่ยวข้องกับ ยูนิกซ์ และสิ่งที่คล้ายคลึงเช่น GNU / Linux) จุดสิ้นสุดของบรรทัดมักจะแสดงด้วย \n และเป็นสิ่งที่ต้องเลือกเข้ามา JSON แต่เป็นที่น่าสนใจที่ต้องจำไว้ว่าระบบปฏิบัติการบางระบบต้องการทางเลือกอื่น Windows มักจะหมายถึงด้วย \r\n การลงท้ายบรรทัดและ Mac OS (ก่อน OS \r

    เกี่ยวกับรูปแบบตัวเลขก็มีการอ้างอิงเช่นกัน JavaScript. ตัวคั่นทศนิยมคือจุด ขีดกลาง (ASCII 45 0x2D) ใช้เป็นเครื่องหมายลบ และ สัญกรณ์ในรูปแบบเอ็กซ์โปเนนเชียล (สัญกรณ์วิทยาศาสตร์) ใช้ E เป็นตัวบ่งชี้ (ซึ่งอาจเป็นตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็กก็ได้)

    อย่างที่ผมบอกไปตอนต้นว่า ในการใช้ข้อมูลซึ่งจะได้รับเป็นข้อความ ภาษาโปรแกรมต่างๆ มีฟังก์ชันการวิเคราะห์และการมอบหมายงาน ตัวอย่างต่อไปนี้แสดงให้เห็นว่าจะนำไปใช้อย่างไร JavaScript. เพื่อให้สามารถใช้งานได้จากคอนโซล จึงรวมการกำหนดข้อมูลไว้ด้วย JSON เพื่อหลีกเลี่ยงข้อผิดพลาดที่อาจเกิดขึ้นได้ ขึ้นอยู่กับมาตรฐาน ECMA ที่ล่ามใช้ JavaScript มีการกำหนดวัตถุแล้ว JSON ในบรรทัดเดียว ฉบับที่ 6 ปี 2016 (ECMA-262) รองรับสตริงหลายบรรทัด รุ่นที่ 5 (จนถึงปี 2011) จำเป็นต้องเพิ่มโค้ด Escape \ และอันที่แล้วจะต้องแก้ด้วยมือหรือใช้เส้นเดียว

    คำเตือนไม่ให้ผู้ใช้ใหม่สับสน JavaScript. ภายในโค้ด JavaScript ไม่จำเป็นต้องใช้สตริงข้อความเพื่อสร้างออบเจ็กต์ ในตัวอย่างก่อนหน้านี้ใช้เพื่อจำลองข้อมูลที่มาถึง เช่น จากเซิร์ฟเวอร์ หากต้องการกำหนดวัตถุให้กับตัวแปร ให้ทำดังนี้:

    วัตถุนั้นสามารถแปลงเป็นข้อความได้ เช่น ด้วยฟังก์ชัน stringify ดังต่อไปนี้:

    รูปแบบ JSON มันค่อนข้างยืดหยุ่น แต่ส่วนใหญ่เป็นเพราะมันใช้ข้อความเพื่อให้มนุษย์อ่านได้ จึงมีข้อเสียอยู่บ้าง ประการแรกคือต้องใช้หน่วยความจำมากขึ้นและใช้แบนด์วิธมากกว่าที่จำเป็น ในตัวอย่างก่อนหน้านี้ มีการใช้รูปแบบที่มีจุดมุ่งหมายเพื่อให้อ่านได้ง่ายกว่าประหยัด ดังนั้นจึงไม่ใช่ตัวอย่างของการประหยัด แม้ว่าจะมีองค์ประกอบหลายอย่างของรูปแบบ (วงเล็บปีกกา วงเล็บเหลี่ยม เครื่องหมายคำพูด...) ที่จะ ใช้ทรัพยากรต่อไปเมื่อเทียบกับข้อมูลที่นำเสนอ ดิบ

    ปัญหาที่สองเกิดขึ้นเมื่อต้องจัดการกับข้อมูลไบนารี่ล้วนๆ (เช่น รูปภาพ) เมื่อต้องจัดการกับส่วนเล็กๆ ก็สามารถแก้ไขได้ด้วยสิ่งที่อธิบายไว้เพื่อแก้ไขการจัดรูปแบบของอักขระพิเศษ แต่ถ้าเป็นเรื่องเกี่ยวกับการเข้ารหัสข้อมูลบางมิติ จำเป็นต้องฝังไว้ในรูปแบบ JSON โดยใช้รูปแบบข้อความอื่น การเข้ารหัสที่ใช้มากที่สุดในการแก้ไขปัญหานี้คือ Base64 เนื่องจากหลายภาษามีห้องสมุดเพื่อแปลงข้อมูลไปในทิศทางเดียวหรืออย่างอื่น หากข้อมูลที่ถูกจัดการส่วนใหญ่เป็นประเภทนี้ และ/หรือไม่จำเป็นสำหรับบุคคลที่จะตีความข้อมูลโดยไม่มีโปรแกรม ก็ควรพิจารณาว่ารูปแบบนั้นหรือไม่ JSON เหมาะสมที่สุด

    แสดงความคิดเห็น

    คุณอาจจะพลาด