JSON āđāļāļĩāļĒāļāļāļąāļ XML: āļāļ§āļēāļĄāđāļāļāļāđāļēāļāļāļĩāđāļŠāļģāļāļąāļāđāļĨāļ°āđāļĄāļ·āđāļāđāļāļāļ§āļĢāđāļāđāđāļāđāļĨāļ°āđāļāļ
JSON āđāļāļĩāļĒāļāļāļąāļ XML: āļ āļēāļāļĢāļ§āļĄ
JSON (JavaScript Object Notation) āđāļĨāļ° XML (eXtensible Markup Language) āļāđāļēāļāļāđāđāļāđāļāļĢāļđāļāđāļāļāļāļēāļĢāđāļĨāļāđāļāļĨāļĩāđāļĒāļāļāđāļāļĄāļđāļĨāđāļāļāļāđāļāļāļ§āļēāļĄ āđāļāđāđāļāđāļ§āļīāļāļĩāļāļēāļĢāļāļąāļāđāļāļĢāļāļŠāļĢāđāļēāļāļāđāļāļĄāļđāļĨāļāļĩāđāđāļāļāļāđāļēāļāļāļąāļāđāļāļĒāļāļ·āđāļāļāļēāļ JSON āđāļŦāđāļāļ§āļēāļĄāļŠāļģāļāļąāļāļāļąāļāļāļ§āļēāļĄāđāļĢāļĩāļĒāļāļāđāļēāļĒāđāļĨāļ°āļāļ§āļēāļĄāļāļĢāļ°āļāļąāļ āđāļāļāļāļ°āļāļĩāđ XML āđāļāđāļāļāļ§āļēāļĄāļŠāļēāļĄāļēāļĢāļāđāļāļāļēāļĢāļāļĒāļēāļĒ āļāđāļāļĄāļđāļĨāđāļĄāļāļē āđāļĨāļ°āļāļļāļāļŠāļĄāļāļąāļāļīāļāļĩāđāđāļāđāļāđāļāļāļŠāļēāļĢāđāļāđāļāļĻāļđāļāļĒāđāļāļĨāļēāļ
āļāļēāļĢāđāļāļĢāļĩāļĒāļāđāļāļĩāļĒāļāļāļĩāđāļāļĢāļ§āļāļŠāļāļāļāļ§āļēāļĄāđāļāļāļāđāļēāļāļāļĩāđāļŠāļģāļāļąāļāđāļāļ·āđāļāļāđāļ§āļĒāđāļŦāđāļāļļāļāđāļĨāļ·āļāļāļĢāļđāļāđāļāļāļāļĩāđāđāļŦāļĄāļēāļ°āļŠāļĄāļŠāļģāļŦāļĢāļąāļāđāļāļĢāļāļāļēāļĢāļāđāļāđāļāļāļāļāļāļļāļ
āļāļēāļĢāđāļāļĢāļĩāļĒāļāđāļāļĩāļĒāļāđāļ§āļĒāļēāļāļĢāļāđ
āļāļąāđāļāļŠāļāļāļĢāļđāļāđāļāļāļŠāļēāļĄāļēāļĢāļāđāļŠāļāļāļāđāļāļĄāļđāļĨāđāļāļĩāļĒāļ§āļāļąāļāđāļāļ§āļīāļāļĩāļāļĩāđāđāļāļāļāđāļēāļāļāļąāļāļĄāļēāļ:
JSON:
{
"book": {
"title": "The Pragmatic Programmer",
"author": "Andy Hunt",
"year": 1999,
"genres": ["Programming", "Software Engineering"],
"inStock": true
}
}
XML:
<book>
<title>The Pragmatic Programmer</title>
<author>Andy Hunt</author>
<year>1999</year>
<genres>
<genre>Programming</genre>
<genre>Software Engineering</genre>
</genres>
<inStock>true</inStock>
</book>
āļāļ§āļēāļĄāđāļāļāļāđāļēāļāļāļēāļāđāļ§āļĒāļēāļāļĢāļāđāļāļĩāđāļŠāļģāļāļąāļ
| Feature | JSON | XML |
|---------|------|-----|
| āļĢāļđāļāđāļāļāđāļ§āļĒāļēāļāļĢāļāđ | āļāļđāđ Key/value | āđāļāđāļāđāļāļīāļ/āļāļīāļ |
| āļāļēāļĢāļĢāļ°āļāļļāļāļĢāļ°āđāļ āļāļāđāļāļĄāļđāļĨ | āļāļĢāļ°āđāļ āļ native (string, number, boolean, null, array, object) | āļāđāļēāļāļąāđāļāļŦāļĄāļāđāļāđāļāļāđāļāļāļ§āļēāļĄ; āļāļēāļĢāļĢāļ°āļāļļāļāļĢāļ°āđāļ āļāļāđāļēāļ schema (XSD) |
| Attributes | āđāļĄāđāļĢāļāļāļĢāļąāļāđāļāļĒāļāļĢāļ | āļĢāļāļāļĢāļąāļāļāđāļēāļ attributes āļāļāļāđāļāđāļ (<book id="123">) |
| āļāļ§āļēāļĄāļāļīāļāđāļŦāđāļ | āđāļĄāđāļĢāļāļāļĢāļąāļ | āļĢāļāļāļĢāļąāļāļāđāļ§āļĒ <!-- comment --> |
| āļāđāļāļĄāļđāļĨāđāļĄāļāļē | āļāļģāļāļąāļ | āļŦāļĨāļēāļāļŦāļĨāļēāļĒ (namespaces, processing instructions, schemas) |
| āļāļēāļĢāđāļŠāļāļ array | āļāļĢāļ°āđāļ āļ array native [] | āļāļāļāđāļāļĢāļ°āļāļāļāļāđāļģāļŦāļĢāļ·āļāđāļāđāļ wrapper āļāļĩāđāļāļģāļŦāļāļāđāļāļ |
āļāļēāļĢāđāļāļĢāļĩāļĒāļāđāļāļĩāļĒāļāļāļāļēāļāļāđāļāļĄāļđāļĨ
JSON āļĄāļĩāļāļāļēāļāļāļ°āļāļąāļāļĢāļąāļāļāļ§āđāļē XML āļāļĒāđāļēāļāļĄāļĩāļāļąāļĒāļŠāļģāļāļąāļāļŠāļģāļŦāļĢāļąāļāļāđāļāļĄāļđāļĨāļāļĩāđāđāļāļĩāļĒāļāđāļāđāļēāļāļąāļ:
- āđāļĄāđāļĄāļĩāđāļāđāļāļāļīāļ -- JSON āđāļāđ
}āđāļĨāļ°]āđāļāļāđāļāđāļāļāļīāļāļāļĩāđ verbose āđāļāđāļ</book> - āđāļĄāđāļĄāļĩāđāļ§āļĒāļēāļāļĢāļāđ attributes -- XML attributes āđāļāļīāđāļĄāļāđāļēāđāļāđāļāđāļēāļĒāļāļēāļāđāļ§āļĒāļēāļāļĢāļāđ
- boilerplate āļāđāļāļĒāļāļĩāđāļŠāļļāļ -- JSON āđāļĄāđāļĄāļĩāļāļēāļĢāļāļĢāļ°āļāļēāļĻ namespace, DOCTYPE āđāļĨāļ° XML prolog
āļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļāļāļāļāļĨāļąāļ API āļāļąāđāļ§āđāļ JSON āļĄāļąāļ āđāļĨāđāļāļāļ§āđāļē 30-40% āđāļĄāļ·āđāļāđāļāļĩāļĒāļāļāļąāļ XML āļāļĩāđāđāļāļĩāļĒāļāđāļāđāļēāļāļąāļ āļŠāļīāđāļāļāļĩāđāđāļāļĨāđāļāļĒāļāļĢāļāđāļāđāļāļāļēāļĢāļāđāļēāļĒāđāļāļāļāđāļēāļāđāļāļĢāļ·āļāļāđāļēāļĒāļāļĩāđāđāļĢāđāļ§āļāļķāđāļāđāļĨāļ°āļāđāļēāđāļāđāļāđāļēāļĒāđāļāļāļāđāļ§āļīāļāļāđāļāļĩāđāļāđāļģāļĨāļ āđāļāļĒāđāļāļāļēāļ°āđāļāļāļāļēāļāđāļŦāļāđ
āļāļ§āļēāļĄāđāļĢāđāļ§āđāļāļāļēāļĢ Parse
JSON parser āđāļāļĒāļāļąāđāļ§āđāļāđāļĢāđāļ§āļāļ§āđāļē XML parser āļāđāļ§āļĒāļŦāļĨāļēāļĒāđāļŦāļāļļāļāļĨ:
- āđāļ§āļĒāļēāļāļĢāļāđāļāļĩāđāļāđāļēāļĒāļāļ§āđāļē -- āđāļ§āļĒāļēāļāļĢāļāđāļāļāļ JSON āđāļāđāļāđāļāļĩāļĒāļāđāļĻāļĐāđāļŠāļĩāđāļĒāļ§āļāļāļāļāļ§āļēāļĄāļāļąāļāļāđāļāļāļāļāļ XML āļāļģāđāļŦāđāļāļēāļĢāđāļāļĩāļĒāļ parser āļāļģāđāļāđāļāđāļēāļĒāđāļĨāļ°āđāļĢāđāļ§āļāļķāđāļ
- āđāļĄāđāļĄāļĩāļāļēāļĢāđāļāđāđāļ namespace -- XML āļāđāļāļāļāļēāļĢāļāļēāļĢāđāļāđāđāļ namespace URI āļāļķāđāļāđāļāļīāđāļĄāļāđāļēāđāļāđāļāđāļēāļĒ
- āļāļēāļĢāđāļĄāļāļāļĢāļ°āđāļ āļ native -- JSON āđāļĄāļāđāļāļĒāļāļĢāļāļāļąāļāđāļāļĢāļāļŠāļĢāđāļēāļāļāđāļāļĄāļđāļĨ native āđāļ JavaScript, Python āđāļĨāļ°āļ āļēāļĐāļēāļāļ·āđāļāđ XML āļāđāļāļāļāļēāļĢāļāļēāļĢāđāļĄāļāđāļāļīāđāļĄāđāļāļīāļĄāļŦāļĢāļ·āļāļāļēāļĢ traverse DOM
āļāļēāļĢāļ§āļąāļāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļāđāļŠāļāļāļāļĒāđāļēāļāļŠāļĄāđāļģāđāļŠāļĄāļāļ§āđāļē JSON parse āđāļĢāđāļ§āļāļ§āđāļē 2-10 āđāļāđāļē āđāļĄāļ·āđāļāđāļāļĩāļĒāļāļāļąāļ XML āļāļķāđāļāļāļĒāļđāđāļāļąāļāļ āļēāļĐāļēāđāļĨāļ°āđāļĨāļāļĢāļēāļĢāļĩāļāļĩāđāđāļāđ
āļāļēāļĢāļŠāļāļąāļāļŠāļāļļāļāļāļēāļāļĢāļ°āļāļāļāļīāđāļ§āļĻāđāļĨāļ°āļ āļēāļĐāļē
JSON
- āļĢāļāļāļĢāļąāļ native āđāļ JavaScript (
JSON.parse(),JSON.stringify()) - āļĢāļāļāļĢāļąāļāđāļāļāļąāļ§āļŦāļĢāļ·āļāļāđāļēāļāđāļĨāļāļĢāļēāļĢāļĩāđāļāļāļļāļāļ āļēāļĐāļēāđāļāļĢāđāļāļĢāļĄāļĄāļīāđāļāļŦāļĨāļąāļ
- āļĢāļđāļāđāļāļāļāļĩāđāđāļāļāđāļāđāļāļŠāļģāļŦāļĢāļąāļ REST API, āļāļēāļāļāđāļāļĄāļđāļĨ NoSQL (MongoDB, CouchDB) āđāļĨāļ° web services
- āļĢāļ°āļāļāļāļīāđāļ§āļĻāđāļāļĢāļ·āđāļāļāļĄāļ·āļāļāļĩāđāđāļĨāđāļāļāļ§āđāļē āđāļāđāļāļāļēāļĢāļāļĢāļ§āļāļŠāļāļ āļāļēāļĢāļāļąāļāļĢāļđāļāđāļāļ āđāļĨāļ° schema (JSON Schema)
XML
- āļĢāļāļāļĢāļąāļāļĢāļ°āļāļąāļāđāļāļīāļĢāđāļŠāļāļĨāļēāļŠāđāļāļĢāļ°āļāļāļāļīāđāļ§āļĻāļāļāļāđāļāļĢ (Java/JAXB, .NET/XmlSerializer)
- āļāļģāđāļāđāļāļŠāļģāļŦāļĢāļąāļāļĢāļđāļāđāļāļāļāļĩāđāđāļāđāļāđāļāļāļŠāļēāļĢ (XHTML, SVG, RSS/Atom, SOAP, āļĢāļđāļāđāļāļāđāļāļĨāđ Office)
- āļĢāļ°āļāļāļāļīāđāļ§āļĻāļāļāļāđāļāļāđāļāđāļĨāļĒāļĩāļāļĩāđāđāļāļĩāđāļĒāļ§āļāđāļāļāļāļĩāđāļŦāļĨāļēāļāļŦāļĨāļēāļĒ: XSLT, XPath, XQuery, XSD, XInclude
- āđāļāđāļāļąāļāļāļĒāđāļēāļāđāļāļĢāđāļŦāļĨāļēāļĒāđāļāļāļēāļĢāđāļāļĒāđāļāļĢāđ āļāļēāļĢāđāļāļīāļ āļāļēāļĢāļāļđāđāļĨāļŠāļļāļāļ āļēāļ (HL7 FHIR) āđāļĨāļ°āļĢāļ°āļāļāļāļāļāđāļāļĢāđāļāđāļē
āđāļĄāļ·āđāļāđāļāļāļ§āļĢāđāļāđ JSON
JSON āđāļāđāļāļāļąāļ§āđāļĨāļ·āļāļāļāļĩāđāļāļĩāļāļ§āđāļēāđāļĄāļ·āđāļ:
- āļŠāļĢāđāļēāļ RESTful āļŦāļĢāļ·āļ GraphQL API -- JSON āđāļāđāļāļĄāļēāļāļĢāļāļēāļāļŠāļģāļŦāļĢāļąāļ Web API āļŠāļĄāļąāļĒāđāļŦāļĄāđ
- āļāļąāļāļāļēāđāļ§āđāļāļŦāļĢāļ·āļāđāļāļāļāļĨāļīāđāļāļāļąāļāļĄāļ·āļāļāļ·āļ -- āđāļāļĢāļēāļ§āđāđāļāļāļĢāđāļĢāļāļāļĢāļąāļ native āđāļĨāļ°āļāļēāļĢ parse āļāļĩāđāđāļāļē
- āļāļąāļāđāļāđāļāđāļāļĨāđāļāļģāļŦāļāļāļāđāļē -- ESLint, Prettier, webpack āđāļĨāļ°āđāļāļĢāļ·āđāļāļāļĄāļ·āļāļāļąāļāđāļĄāđāļāđāļ§āļāđāļāđ JSON
- āļāļģāļāļēāļāļāļąāļāļāļēāļāļāđāļāļĄāļđāļĨ NoSQL -- MongoDB, CouchDB āđāļĨāļ° Firebase āđāļāđāđāļĄāđāļāļĨāđāļāļāļŠāļēāļĢāļāļĨāđāļēāļĒ JSON
- āļāļĢāļąāļāđāļŦāđāđāļŦāļĄāļēāļ°āļŠāļĄāļŠāļģāļŦāļĢāļąāļāđāļāļāļāđāļ§āļīāļāļāđ -- āļāļāļēāļāļāļĩāđāļāļ°āļāļąāļāļĢāļąāļāļāļāļ JSON āļĨāļāļāđāļēāđāļāđāļāđāļēāļĒāđāļāļĢāļ·āļāļāđāļēāļĒ
- āļŠāļĢāđāļēāļāļāđāļāđāļāļāļŦāļĢāļ·āļāļāļąāļāļāļēāļāļĒāđāļēāļāļĢāļ§āļāđāļĢāđāļ§ -- āļāļ§āļēāļĄāđāļĢāļĩāļĒāļāļāđāļēāļĒāļāļāļ JSON āđāļĢāđāļāļāļēāļĢāļāļģāļāđāļģ
āđāļĄāļ·āđāļāđāļāļāļ§āļĢāđāļāđ XML
XML āļĒāļąāļāļāļāđāļāđāļāļāļąāļ§āđāļĨāļ·āļāļāļāļĩāđāļāļĩāļāļ§āđāļēāđāļĄāļ·āđāļ:
- āļāļēāļĢāđāļĨāļāđāļāļĨāļĩāđāļĒāļāđāļāļāļŠāļēāļĢāļāļĩāđāļāļąāļāļāđāļāļ -- XML āđāļāļāđāļāđāļāļāļąāļāđāļāļāļŠāļēāļĢāļāļĩāđāļĄāļĩāđāļāļ·āđāļāļŦāļēāļāļŠāļĄ āļāđāļāļĄāļđāļĨāđāļĄāļāļē āđāļĨāļ°āļāļāđāļāļĢāļāļŠāļĢāđāļēāļ
- āļāļēāļĢāļāļŠāļēāļāļĢāļ§āļĄāļĢāļ°āļāļąāļāļāļāļāđāļāļĢ -- SOAP web services, āļŠāđāļ§āļāļāđāļāļāļĢāļ°āļŠāļēāļāļĢāļ°āļāļāđāļāđāļē āđāļĨāļ°āļāļēāļĢāđāļĨāļāđāļāļĨāļĩāđāļĒāļāļāđāļāļĄāļđāļĨ B2B
- āļāļēāļĢāļāļāļīāļāļąāļāļīāļāļēāļĄāļĄāļēāļāļĢāļāļēāļ -- āļĄāļēāļāļĢāļāļēāļāļāļļāļāļŠāļēāļŦāļāļĢāļĢāļĄāļāļģāļāļ§āļāļĄāļēāļ (SVG, MathML, RSS, Atom, XBRL) āđāļāđāļāđāļāļ XML
- āļāļ§āļēāļĄāļāđāļāļāļāļēāļĢāļāđāļāļĄāļđāļĨāđāļĄāļāļēāļāļĩāđāļāļĢāļāļāļāļĨāļļāļĄ -- XML namespaces, attributes āđāļĨāļ° processing instructions āđāļŦāđāļāļ§āļēāļĄāļŠāļēāļĄāļēāļĢāļāļāđāļēāļāļāđāļāļĄāļđāļĨāđāļĄāļāļēāļāļĩāđāļŦāļĨāļēāļāļŦāļĨāļēāļĒ
- āđāļāļ·āđāļāļŦāļēāļŦāļĨāļēāļĒāļ āļēāļĐāļē -- āđāļāļĢāļ·āđāļāļāļĄāļ·āļ i18n āđāļĨāļ° localization āļāļĩāđāđāļāļīāļāđāļāđāļāđāļĄāļāļĩāđāļāļāļ XML
- āđāļ§āļīāļĢāđāļāđāļāļĨāļ§āđāļāļĩāđāļāļąāļāđāļāļĨāļ·āđāļāļāļāđāļ§āļĒāļāļēāļĢāđāļāļĨāļ -- XSLT āļāđāļ§āļĒāđāļŦāđ pipeline āļāļēāļĢāđāļāļĨāļāđāļāļāļŠāļēāļĢāļāļĩāđāļāļĢāļāļāļĨāļąāļ
āļāļēāļĢāļāļąāļāļŠāļīāļāđāļ: āđāļĄāļāļĢāļīāļāļāđāļāļēāļĢāļāļąāļāļŠāļīāļāđāļ
| Factor | JSON | XML | |--------|------|-----| | API development | Best choice | Legacy only | | Configuration files | Best choice | Overkill | | Enterprise integration | Possible | Best choice | | Document storage | Limited | Best choice | | Mobile/web apps | Best choice | Avoid | | Big data / streaming | Best choice | Avoid | | Mixed content documents | Not suitable | Best choice | | Schema validation | JSON Schema | XSD (more mature) |
āļāļāļŠāļĢāļļāļ
āļŠāļģāļŦāļĢāļąāļāļŠāļāļēāļāļāļēāļĢāļāđāļāļēāļĢāļāļąāļāļāļēāđāļ§āđāļāļŠāļĄāļąāļĒāđāļŦāļĄāđāļŠāđāļ§āļāđāļŦāļāđ â REST API, āđāļāļĨāđāļāļģāļŦāļāļāļāđāļē, āļāđāļāļĄāļđāļĨāđāļāļāļĄāļ·āļāļāļ·āļ â JSON āđāļāđāļāļāļđāđāļāļāļ°āļāļĩāđāļāļąāļāđāļāļāđāļāļ·āđāļāļāļāļēāļāļāļ§āļēāļĄāđāļĢāļĩāļĒāļāļāđāļēāļĒ āļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļ āđāļĨāļ°āļāļēāļĢāļŠāļāļāļāļĨāđāļāļāļāļąāļāļĢāļ°āļāļāļāļīāđāļ§āļĻ XML āļĒāļąāļāļāļāļāļģāđāļāđāļāđāļāļāļĢāļīāļāļāļāļāļāđāļāļĢ āđāļāļāļāļĨāļīāđāļāļāļąāļāļāļĩāđāđāļāđāļāđāļāļāļŠāļēāļĢ āđāļĨāļ°āļāļļāļāļŠāļēāļŦāļāļĢāļĢāļĄāļāļĩāđāļĄāļĩāļĄāļēāļāļĢāļāļēāļ XML āļāļĩāđāļāļąāļāļāļąāđāļāļāļķāđāļ
āđāļāđ JSON formatter āđāļĨāļ° validator āđāļāļ·āđāļāđāļŦāđāđāļāđāđāļāļ§āđāļēāļāđāļāļĄāļđāļĨ JSON āļāļāļāļāļļāļāļŠāļ°āļāļēāļ āļāļđāļāļāđāļāļ āđāļĨāļ°āļĄāļĩāđāļāļĢāļāļŠāļĢāđāļēāļāļāļĩāđāļāļĩāļŠāļģāļŦāļĢāļąāļāļāļļāļāļāļĢāļāļĩāļāļēāļĢāđāļāđāļāļēāļ