Data Tools

XML vs JSON: ทำความเข้าใจรูปแบบข้อมูลสำหรับ APIs และไฟล์ Config

เปรียบเทียบ XML และ JSON เรียนรู้ว่าควรใช้อะไรเมื่อไหร่ และเชี่ยวชาญเครื่องมือสำหรับการแปลง ตรวจสอบ และ query ข้อมูลที่มีโครงสร้าง

6 นาทีในการอ่าน

Data visualization on a monitor

ทุกแอปพลิเคชันที่สื่อสารกับโลกภายนอกต่างแลกเปลี่ยนข้อมูลในรูปแบบที่มีโครงสร้างบางอย่าง XML ครองตลาดในยุค 2000s ส่วน JSON เข้ามาแทนที่ในช่วง 2010s แต่ XML ก็ยังไม่ได้หายไปไหน — มันยังคงขับเคลื่อน SOAP APIs, RSS feeds, SVG graphics, Android layouts และระบบองค์กรอีกนับไม่ถ้วน การเข้าใจทั้งสองรูปแบบจะทำให้คุณเป็นนักพัฒนาที่มีความสามารถรอบด้านมากขึ้น

JSON ในมุมมองรวบรัด

JSON (JavaScript Object Notation) คือภาษากลางของ web APIs ยุคใหม่ มันแมปตรงกับชนิดข้อมูลที่พบในภาษาโปรแกรมส่วนใหญ่:

{
  "user": {
    "id": 42,
    "name": "Alice Chen",
    "roles": ["admin", "editor"],
    "active": true,
    "score": 98.6,
    "avatar": null
  }
}

ชนิดข้อมูล: string, number, boolean, null, array, object

JSON กระชับ อ่านง่าย และ parse ได้อย่างง่ายดายในทุกภาษา เป็นตัวเลือกหลักสำหรับ REST APIs, ไฟล์ configuration และการจัดเก็บข้อมูลในเบราว์เซอร์

XML ในมุมมองรวบรัด

XML (eXtensible Markup Language) แสดงข้อมูลในรูปแบบของ tree ที่ประกอบด้วย element ที่มี tag:

<?xml version="1.0" encoding="UTF-8"?>
<user id="42">
  <name>Alice Chen</name>
  <roles>
    <role>admin</role>
    <role>editor</role>
  </roles>
  <active>true</active>
  <score>98.6</score>
</user>

XML มีความยาวมากกว่าแต่มีความสามารถในการแสดงออกสูง รองรับ attributes (เช่น id="42" ด้านบน), namespaces (สำหรับการผสม vocabulary), comments, processing instructions และ schemas สำหรับการตรวจสอบที่เข้มงวด

การเปรียบเทียบแบบเคียงข้างกัน

คุณสมบัติ JSON XML
ความยาว กระชับ ยืดยาว
ชนิดข้อมูล 6 ชนิดแบบ native ทุกอย่างเป็น text
Comments ❌ ไม่รองรับ <!-- -->
Attributes ❌ ไม่มีแนวคิดนี้ ✅ มี
Namespaces ❌ ไม่มีแนวคิดนี้ ✅ มี
Schemas JSON Schema XSD, DTD, RelaxNG
Query language JSONPath, jq XPath, XQuery
XSLT transforms
ความอ่านง่ายสำหรับมนุษย์ สูง ปานกลาง
ความซับซ้อนในการ parse ต่ำ สูงกว่า

เมื่อไหร่ควรใช้ JSON

  • REST APIs (แพร่หลายโดยทั่วไป)
  • localStorage / sessionStorage ของเบราว์เซอร์
  • ไฟล์ configuration (package.json, tsconfig.json)
  • NoSQL document stores (MongoDB, Firestore)
  • การสื่อสารระหว่าง service ใน microservices
  • ทุกที่ที่ต้องการแลกเปลี่ยนข้อมูลที่รวดเร็วและเบา

เมื่อไหร่ควรใช้ XML

  • SOAP web services (การเงิน, การแพทย์, ภาครัฐ)
  • RSS และ Atom feeds
  • SVG graphics
  • ไฟล์ resource ของ Android (layouts, strings, manifests)
  • รูปแบบเอกสาร Office (.docx, .xlsx คือไฟล์ ZIP ที่บรรจุ XML)
  • เมื่อต้องการ mixed content (ข้อความที่มี inline markup)
  • ระบบองค์กรที่ยังไม่ได้ย้ายมาใช้ JSON

การแปลงระหว่างรูปแบบ

การแปลง XML เป็น JSON ไม่ใช่การ mapping แบบ 1 ต่อ 1 เสมอไป — XML มีแนวคิด (attributes, text nodes, namespaces) ที่ไม่มีใน JSON กลยุทธ์ที่ใช้กันทั่วไปมีดังนี้:

Attributes กลายเป็น properties

<user id="42" active="true">Alice</user>

อาจกลายเป็น:

{ "@id": "42", "@active": "true", "#text": "Alice" }

หรือแบบ flatten:

{ "id": 42, "active": true, "name": "Alice" }

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

การตรวจสอบ JSON ด้วย JSON Schema

JSON Schema ช่วยให้คุณกำหนดโครงสร้างที่คาดหวังของเอกสาร JSON:

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "required": ["id", "name", "email"],
  "properties": {
    "id": { "type": "integer", "minimum": 1 },
    "name": { "type": "string", "minLength": 1 },
    "email": { "type": "string", "format": "email" },
    "roles": {
      "type": "array",
      "items": { "type": "string" }
    }
  }
}

ตรวจสอบเอกสาร JSON ของคุณกับ schema ด้วย JSON Schema Validator ของเรา — ตรวจจับข้อผิดพลาดด้านโครงสร้างก่อนที่จะถึง production

JSONPath: การ query ข้อมูลที่ซ้อนกัน

JSONPath มีความสัมพันธ์กับ JSON เหมือนที่ XPath มีกับ XML ไวยากรณ์การ query:

$.store.book[*].author          — ผู้แต่งทั้งหมด
$.store.book[0].title           — ชื่อหนังสือเล่มแรก
$.store.book[?(@.price < 10)]   — หนังสือที่ราคาต่ำกว่า $10
$..price                        — ค่า price ทั้งหมดไม่ว่าจะอยู่ที่ไหน

XPath ที่เทียบเท่าสำหรับ XML:

/store/book/author               — ผู้แต่งทั้งหมด
/store/book[1]/title             — ชื่อหนังสือเล่มแรก
/store/book[@price < 10]         — หนังสือที่ราคาต่ำกว่า $10
//price                          — ค่า price ทั้งหมดไม่ว่าจะอยู่ที่ไหน

การจัดรูปแบบและ pretty-printing

ทั้งสองรูปแบบอ่านยากมากเมื่อถูก minify เสมอ pretty-print เพื่อการ debug และการตรวจสอบโดยมนุษย์

JSON แบบ minified:

{"user":{"id":42,"name":"Alice Chen","roles":["admin","editor"]}}

JSON แบบ pretty-printed (ย่อหน้า 2 ช่องว่าง):

{
  "user": {
    "id": 42,
    "name": "Alice Chen",
    "roles": [
      "admin",
      "editor"
    ]
  }
}

ใช้ JSON Formatter ของเราเพื่อ pretty-print, minify และตรวจสอบ JSON ได้ทันที สำหรับการเปรียบเทียบ JSON สอง blob ใช้ JSON Diff ที่ไฮไลต์สิ่งที่เปลี่ยนแปลงไปอย่างชัดเจน

ข้อผิดพลาดที่พบบ่อย

JSON

  • Trailing commas — ไม่ valid ใน JSON (แต่ valid ใน JavaScript)
  • Single quotes — JSON กำหนดให้ใช้ double quotes สำหรับ string
  • ตัวเลขในรูปแบบ string"42"42; ควรใช้ให้สอดคล้องกัน
  • การซ้อนที่ลึกเกินไป — อ่านยากและ query ยาก; ทำให้แบนลงได้เท่าที่เป็นไปได้

XML

  • ตัวอักษรที่ไม่ได้ escape<, >, &, ", ' ต้องถูก escape เป็น entities
  • BOM ที่ต้นไฟล์ — parser บางตัวติดปัญหากับ UTF-8 BOM
  • ความสับสนของ namespace — ผิดพลาดได้ง่ายในเอกสารที่มีหลาย vocabulary

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