Skip to main content
0

สารจากนักเขียน

JSON (JavaScript Object Notation) และ XML (Extensible Markup Language) คือรูปแบบการแลกเปลี่ยนข้อมูลสองประเภทใหญ่ ๆ ที่ใช้กันอย่างแพร่หลาย ถึงแม้จะมีความใกล้เคียงกันมาก แต่ก็ไม่ได้เหมือนกันซะทีเดียว ทั้งในเรื่องของโครงสร้าง การใช้งาน และความปลอดภัย โดยบทความนี้เราจะพาไปดูข้อเปรียบเทียบต่าง ๆ ของ JSON และ XML เพื่อช่วยให้ทุกคนสามารถตัดสินใจเลือกได้ว่าระหว่าง JSON กับ XML ตัวไหนเหมาะกับงานของเรามากที่สุดครับ

JSON คืออะไร?

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

XML คืออะไร?

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

โครงสร้างของ JSON และ XML

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

{
   "name": "John Doe",
   "age": 30,
   "city": "New York"
}


ส่วน XML จะมีการเก็บค่าในรูปแบบโครงสร้าง ตามด้วย tag เปิดและปิดเหมือนกับภาษา HTML ทำให้การเก็บข้อมูลแต่ละตัวต้องใช้พื้นที่มากขึ้น โดยเฉพาะข้อมูลขนาดใหญ่ที่มีความความซับซ้อน เพราะจะมี tag เปิดและปิดเต็มไปหมดโดยการนำไปใช้งานกับ JavaScript ก็ยุ่งยากและช้ากว่า เพราะจะต้องดึงข้อมูล XML Document และ loop เข้าไปทำการเก็บข้อมูลออกมาใส่ตัวแปรไว้อีกที

<person>
   <name>John Doe</name>
   <age>30</age>
   <city>New York</city>
</person>

ชนิดข้อมูล

JSON รองรับกับ Data Type หลายประเภท ไม่ว่าจะเป็น strings, numbers, booleans, arrays, objects และ null แต่จะไม่มีการสนับสนุนที่ชัดเจนสำหรับชนิดข้อมูลที่ซับซ้อนอย่าง วันที่ และข้อมูลจำพวกไบนารี่

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

การใช้งาน

โดยทั่วไป JSON ใช้สำหรับการติดต่อกันผ่าน API, Configuration files และการแลกเปลี่ยนข้อมูลระหว่าง Web Services และ JSON เป็นที่นิยมในเว็บไซต์เนื่องจากขนาดไฟล์ที่เล็ก ความเรียบง่ายของโครงสร้าง และความสะดวกในการใช้งานใน Programming languages สมัยใหม่

ส่วน XML ที่มีความซับซ้อนมากขึ้นในการเขียนและอ่าน และแสดงผลในไฟล์ขนาดใหญ่ มักใช้สำหรับข้อมูลแบบ document-oriented รวมถึง HTML, Configuration files และการจัดเก็บข้อมูลในฐานข้อมูล อย่าง XML databases

ความปลอดภัย

National Institute of Standards and Technology (NIST) ได้มีการศึกษาในจุดนี้และค้นพบว่า XML มีความปลอดภัยมากกว่า JSON โดยวิธีการศึกษาใช้ทั้งชุดข้อมูลโอเพ่นซอร์สและชุดข้อมูลที่เป็นกรรมสิทธิ์ซึ่งส่งผ่านช่องทางที่ไม่ปลอดภัยทั้งคู่ แต่ XML มีแนวโน้มที่จะถูกโจมตีมากกว่า JSON ทั้งนี้ทั้งนั้นก็มีความเสี่ยงที่จะถูกโจมตีทั้งคู่อยู่ดี

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

สรุปความแตกต่างระหว่าง JSON กับ XML

JSON

  • JavaScript Object Notation
  • เปิดตัวในปี 2001
  • ใช้โครงสร้างเป็นแบบ key, value
  • มี Syntax ที่ไม่ซับซ้อน ง่ายต่อการอ่านและเขียน
  • การสร้าง Document, Schema สามารถทำได้ง่ายและมีความยืดหยุ่นมากกว่า
  • รองรับชนิดข้อมูลประเภท Number, Object, String และ Boolean
  • มีขนาดไฟล์ที่เล็กและมีการส่งข้อมูลที่เร็ว

XML

  • Extensible Markup Language 
  • เปิดตัวในปี 1998
  • เก็บข้อมูลในโครงสร้างแบบต้นไม้ที่มี namespaces สำหรับประเภทข้อมูลที่แตกต่างกัน
  • ทดแทนตัวอักษรบางตัวด้วย entity reference ซึ่งทำให้ Syntax มีความเยิ่นเย้อ
  • การสร้าง Document, Schema มีความซับซ้อนและยืดหยุ่นน้อยกว่า
  • รองรับทุกชนิดข้อมูลเช่นเดียวกับ JSON และประเภทอื่น ๆ เพิ่มเติม เช่น วันที่ ภาพ และ namespaces
  • โครงสร้างแท็ก XML มีความซับซ้อนในการเขียนและอ่าน และมีขนาดไฟล์ที่ใหญ่

บทส่งท้าย

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

อ้างอิง

  1. JSON เทียบกับ XML – ความแตกต่างระหว่างการแสดงข้อมูล, สืบค้นเมื่อ 10 ตุลาคม 2566
    จาก: https://aws.amazon.com/th/compare/the-difference-between-json-xml/
  2. JSON กับ XML, สืบค้นเมื่อ 12 ตุลาคม 2566
    จาก: https://appmaster.io/th/blog/json-kab-xml
  3. เข้าใจ JSON ใน 5 นาที, สืบค้นเมื่อ 12 ตุลาคม 2566
    จาก: https://www.borntodev.com/2020/02/28/what-is-json/
ภาณุวัฒน์ พิศวงษ์

Author ภาณุวัฒน์ พิศวงษ์

More posts by ภาณุวัฒน์ พิศวงษ์

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

ตั้งค่าความเป็นส่วนตัว

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

ยอมรับทั้งหมด
จัดการความเป็นส่วนตัว
  • คุกกี้ที่จำเป็น
    เปิดใช้งานตลอด

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

  • คุกกี้สำหรับการติดตามทางการตลาด

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

บันทึกการตั้งค่า