JSON คืออะไร? รูปแบบที่ดีกว่าสำหรับการแลกเปลี่ยนข้อมูล

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

ในช่วง 15 ปีที่ผ่านมา JSON ได้แพร่หลายบนเว็บ ปัจจุบันเป็นรูปแบบตัวเลือกสำหรับบริการเว็บที่เปิดเผยต่อสาธารณะเกือบทุกแห่งและมักใช้กับบริการเว็บส่วนตัวด้วยเช่นกัน

ความนิยมของ JSON ยังส่งผลให้มีการสนับสนุน JSON ดั้งเดิมโดยฐานข้อมูลจำนวนมาก ฐานข้อมูลเชิงสัมพันธ์เช่น PostgreSQL และ MySQL มาพร้อมกับการสนับสนุนดั้งเดิมสำหรับการจัดเก็บและสืบค้นข้อมูล JSON ฐานข้อมูล NoSQL เช่น MongoDB และ Neo4j ยังรองรับ JSON แม้ว่า MongoDB จะใช้ JSON เวอร์ชันไบนารีที่ปรับเปลี่ยนเล็กน้อยอยู่เบื้องหลัง

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

ตัวอย่าง JSON

นี่คือตัวอย่างของข้อมูลที่เข้ารหัสใน JSON:

{

  “ firstName”:“ โจนาธาน”,

  “ lastName”:“ Freeman”,

  “ loginCount”: 4,

  “ isWriter”: จริง

  “ worksWith”: [“ Spantree Technology Group”,“”],

  “ สัตว์เลี้ยง”: [

    {

      “ ชื่อ”:“ ลิลลี่”,

      “ ประเภท”:“ แรคคูน”

    }

  ]

}

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

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

ไฟล์ JSON

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

เหตุใดฉันจึงควรใช้ JSON 

เพื่อให้เข้าใจถึงประโยชน์และความสำคัญของ JSON เราจะต้องทำความเข้าใจเกี่ยวกับประวัติความเป็นมาของการโต้ตอบบนเว็บ 

ในช่วงต้นทศวรรษ 2000 การโต้ตอบบนเว็บเริ่มเปลี่ยนไป ในเวลานั้นเบราว์เซอร์ส่วนใหญ่ทำหน้าที่เป็นไคลเอนต์ใบ้ในการแสดงข้อมูลและเซิร์ฟเวอร์ก็ทำงานหนักทั้งหมดเพื่อเตรียมเนื้อหาสำหรับการแสดงผล เมื่อผู้ใช้คลิกที่ลิงก์หรือปุ่มในเบราว์เซอร์คำขอจะถูกส่งไปยังเซิร์ฟเวอร์เซิร์ฟเวอร์จะเตรียมข้อมูลที่จำเป็นเป็น HTML และเบราว์เซอร์จะแสดง HTML เป็นเพจใหม่ รูปแบบนี้ทำงานช้าและไม่มีประสิทธิภาพทำให้เบราว์เซอร์ต้องแสดงผลทุกอย่างบนหน้าอีกครั้งแม้ว่าจะมีการเปลี่ยนแปลงเพียงบางส่วนของหน้าก็ตาม

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

REST กับ SOAP: การเชื่อมต่อ JSON

เดิมข้อมูลนี้ถูกถ่ายโอนในรูปแบบ XML (ดูตัวอย่างด้านล่าง) โดยใช้โปรโตคอลการส่งข้อความที่เรียกว่า SOAP (Simple Object Access Protocol) แต่ XML นั้นละเอียดและยากที่จะจัดการใน JavaScript JavaScript มีอ็อบเจ็กต์อยู่แล้วซึ่งเป็นวิธีการแสดงข้อมูลภายในภาษาดังนั้นดักลาสคร็อกฟอร์ดจึงใช้ส่วนย่อยของนิพจน์นั้นเป็นข้อกำหนดสำหรับรูปแบบการแลกเปลี่ยนข้อมูลใหม่และขนานนามว่า JSON JSON นั้นง่ายกว่ามากสำหรับผู้คนในการอ่านและสำหรับเบราว์เซอร์ในการแยกวิเคราะห์

ในช่วงทศวรรษที่ 00 เทคโนโลยีบริการเว็บอื่นที่เรียกว่า Representational State Transfer หรือ REST เริ่มแซงหน้า SOAP เพื่อวัตถุประสงค์ในการถ่ายโอนข้อมูล ข้อดีอย่างหนึ่งของการเขียนโปรแกรมโดยใช้ REST API คือคุณสามารถใช้รูปแบบข้อมูลได้หลายรูปแบบไม่ใช่แค่ XML แต่ยังรวมถึง JSON และ HTML ด้วย เนื่องจากนักพัฒนาเว็บนิยมใช้ JSON มากกว่า XML ดังนั้นพวกเขาจึงชอบ REST มากกว่า SOAP เช่นกัน ดังที่ Kostyantyn Kharchenko วางไว้ในบล็อก Svitla“ ในหลาย ๆ ด้านความสำเร็จของ REST เกิดจากรูปแบบ JSON เนื่องจากใช้งานง่ายบนแพลตฟอร์มต่างๆ”

ปัจจุบัน JSON เป็นมาตรฐานโดยพฤตินัยสำหรับการแลกเปลี่ยนข้อมูลระหว่างเว็บและไคลเอนต์มือถือและบริการแบ็คเอนด์ 

JSON กับ XML

ดังที่ระบุไว้ข้างต้นทางเลือกหลักของ JSON คือ XML อย่างไรก็ตาม XML มีน้อยลงเรื่อย ๆ ในระบบใหม่และง่ายต่อการดูว่าทำไม ด้านล่างนี้เป็นเวอร์ชันของข้อมูลที่คุณเห็นด้านบนคราวนี้เป็น XML:

  โจนาธาน

  ฟรีแมน

  4

  จริง

    Spantree Technology Group

      ลิลลี่

      แรคคูน

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

ข้อ จำกัด ของ JSON

แม้ว่า JSON จะเป็นรูปแบบข้อมูลที่กระชับและยืดหยุ่นซึ่งง่ายต่อการใช้งานกับภาษาโปรแกรมต่างๆ แต่ก็มีข้อบกพร่องบางประการในรูปแบบ ข้อ จำกัด หลัก 5 ประการมีดังนี้ 

  1. ไม่มีสคีมา ในแง่หนึ่งนั่นหมายความว่าคุณมีความยืดหยุ่นอย่างเต็มที่ในการนำเสนอข้อมูลในแบบที่คุณต้องการ ในทางกลับกันหมายความว่าคุณสามารถสร้างข้อมูลที่ผิดรูปแบบโดยไม่ได้ตั้งใจได้ง่ายมาก
  2. ประเภทตัวเลขเดียวเท่านั้น: รูปแบบจุดลอยตัวความแม่นยำสองเท่าของ IEEE-754 นั่นเป็นเรื่องที่น่าฟัง แต่ก็หมายความว่าคุณไม่สามารถใช้ประโยชน์จากประเภทตัวเลขที่หลากหลายและเหมาะสมที่มีอยู่ในภาษาโปรแกรมจำนวนมากได้
  3. ไม่มีประเภทวันที่ การละเว้นนี้หมายความว่านักพัฒนาซอฟต์แวร์ต้องใช้การแสดงวันที่แบบสตริงซึ่งนำไปสู่ความคลาดเคลื่อนในการจัดรูปแบบหรือต้องแสดงวันที่ในรูปแบบมิลลิวินาทีนับตั้งแต่ยุค (1 มกราคม 1970)
  4. ไม่มีความคิดเห็น. ทำให้ไม่สามารถใส่คำอธิบายประกอบช่องแบบอินไลน์ได้ต้องใช้เอกสารประกอบเพิ่มเติมและเพิ่มโอกาสที่จะเข้าใจผิด
  5. คำฟุ่มเฟือย แม้ว่า JSON จะมีรายละเอียดน้อยกว่า XML แต่ก็ไม่ใช่รูปแบบการแลกเปลี่ยนข้อมูลที่กระชับที่สุด สำหรับบริการปริมาณมากหรือวัตถุประสงค์พิเศษคุณจะต้องใช้รูปแบบข้อมูลที่มีประสิทธิภาพมากขึ้น

ฉันควรใช้ JSON เมื่อใด

หากคุณกำลังเขียนซอฟต์แวร์ที่สื่อสารกับเบราว์เซอร์หรือแอปพลิเคชันมือถือที่มาพร้อมเครื่องคุณควรใช้ JSON เป็นรูปแบบข้อมูล การใช้รูปแบบเช่น XML เป็นตัวเลือกที่ล้าสมัยและธงสีแดงสำหรับผู้มีความสามารถระดับแนวหน้าและอุปกรณ์เคลื่อนที่ที่คุณต้องการดึงดูด

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

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

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

ตัวแยกวิเคราะห์ JSON

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

คุณอาจต้องทำงานเพิ่มอีกเล็กน้อยเพื่อทำงานกับ JSON ในภาษาที่พิมพ์ยากเช่น Scala หรือ Elm แต่การนำ JSON มาใช้อย่างแพร่หลายหมายความว่ามีไลบรารีและยูทิลิตี้ที่จะช่วยคุณในทุกส่วนที่ยากที่สุด 

เว็บไซต์ json.org มีรายการไลบรารีโค้ดที่ครอบคลุมซึ่งคุณสามารถใช้เพื่อแยกวิเคราะห์สร้างและจัดการ JSON ในภาษาที่หลากหลายเช่น Python, C # และ COBOL

ยูทิลิตี้ JSON

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

  • JSON Formatter: JSONLint จะจัดรูปแบบและตรวจสอบรหัส JSON โดยพลการ
  • JSON Viewer: Stack.hu มีไซต์ที่จะสร้างโครงสร้างแบบโต้ตอบเพื่อช่วยให้คุณเข้าใจโครงสร้างของโค้ด JSON ของคุณ 
  • JSON Beautifier:หากคุณต้องการ "พิมพ์สวย" โค้ด JSON ของคุณด้วยการระบายสีไวยากรณ์และสิ่งที่คล้ายกัน Prettydiff สามารถช่วยคุณได้ 
  • JSON Converter:ต้องการย้ายข้อมูลจากรูปแบบ JSON ไปเป็นอย่างอื่นอย่างรวดเร็วหรือไม่? Convertcsv.com มีเครื่องมือที่สามารถแปลง JSON เป็น CSV (ซึ่งสามารถเปิดได้ใน Excel) หรือ XML

การสอน JSON

พร้อมที่จะดำน้ำและเรียนรู้เพิ่มเติมเกี่ยวกับการทำงานกับ JSON ในแอปพลิเคชันเชิงโต้ตอบของคุณหรือยัง Mozilla Developer Network มีบทช่วยสอนที่ยอดเยี่ยมที่จะช่วยให้คุณเริ่มต้นใช้งาน JSON และ JavaScript หากคุณพร้อมที่จะเปลี่ยนไปใช้ภาษาอื่นโปรดดูบทช่วยสอนเกี่ยวกับการใช้ JSON กับ Java (จาก Baeldung) ด้วย Python (จาก DataCamp) หรือด้วย C # (จาก Software Testing Help) โชคดี!

Josh Fruhlinger สนับสนุนบทความนี้