JSON เทียบกับ XML: ควรเลือกรูปแบบข้อมูลแบบไหน?
Quick Answer
ใช้ JSON สำหรับ API, web app และไฟล์ config ที่ transfer น้ำหนักสำคัญ ใช้ XML สำหรับรูปแบบ document-heavy, SOAP service และระบบที่ต้อง schema validation JSON เป็น default สำหรับ web API สมัยใหม่; XML ยังเด่นใน enterprise SOAP และ RSS/Atom
Introduction
JSON (JavaScript Object Notation) และ XML (eXtensible Markup Language) เป็นรูปแบบแลกเปลี่ยนข้อมูลที่ใช้มากสองแบบ JSON เป็นรูปแบบ text-based น้ำหนักจาก JavaScript XML เป็นภาษา markup ใช้ tag โครงสร้างข้อมูล ทั้งคู่อ่านและ parse ได้ แต่ต่างกันใน verbosity ความซับซ้อน และ ecosystem fit
Step by Step
-
Compare syntax and verbosity
JSON uses curly braces and key-value pairs: {"name": "value"}. XML uses opening and closing tags: <name>value</name>. XML requires more characters for the same data — typically 30-60% more bytes than JSON. JSON has no closing tags, no attributes vs element distinction, and no declaration overhead.
-
Compare data types and structure
JSON supports 6 types: string, number, boolean, null, array, object. XML has no built-in types — everything is text unless specified via schema (XSD). XML supports attributes, mixed content, and namespaces. JSON has none of these, which keeps it simpler but less expressive for document-centric data.
-
Compare parsing and performance
JSON parsing is faster in JavaScript because it maps directly to JS objects (JSON.parse). XML requires a DOM parser or SAX stream parser, which is heavier. In benchmarks, JSON parsing is typically 2-5x faster than XML DOM parsing for equivalent data.
-
Compare ecosystem and tooling
JSON is the de facto standard for REST APIs. XML is used in SOAP APIs, RSS/Atom feeds, SVG, OOXML (Excel/Word), and configuration formats. Modern web frameworks favor JSON. Enterprise frameworks still use XML extensively.
-
Decide based on your use case
REST APIs, NoSQL databases, config files, AJAX/web apps: JSON. SOAP services, RSS/Atom feeds, SVG graphics, office documents, enterprise messaging: XML.
Examples
Same data in JSON and XML
Input: JSON: {"user": {"id": 1, "name": "Alice", "active": true}}
XML: <user><id>1</id><name>Alice</name><active>true</active></user>
Output: JSON: 52 bytes. XML: 78 bytes (50% more). Both represent identical data.
Common Problems
- XML verbosity: XML can be 30-60% larger than JSON for the same data, increasing bandwidth and storage costs — use JSON for data interchange where size matters.
- JSON has no comments: JSON spec forbids comments, making it awkward for hand-edited configuration — use YAML or JSON5 if you need comments, or use XML with schema documentation.
- XML attribute vs element ambiguity: XML can represent data as attributes or child elements with no clear rule, leading to inconsistent models — define a convention or use JSON which has only key-value pairs.
- Namespace collisions in XML: XML namespaces are complex and often misapplied, causing parsing failures — JSON has no namespaces, which simplifies data interchange at the cost of extensibility.
Tips
- Default to JSON for new APIs, configuration, and data interchange — it is the modern web standard and parses natively in every browser via JSON.parse.
- Use XML only when you need attributes, mixed content, namespaces, or schema validation (XSD) — typical in enterprise SOAP, SVG, and office document formats.
- Validate your JSON with a linter before sending it to production — a single trailing comma or unquoted key will break JSON.parse silently.
- When converting XML to JSON, decide upfront how to handle attributes vs child elements — most converters use a convention like @attr for attributes and #text for mixed content.