← Назад к вопросам

Что такое JSON и XML? Чем они отличаются?

1.0 Junior🔥 71 комментариев
#Требования и их анализ

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI29 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

JSON и XML: форматы обмена данными

Определение

JSON (JavaScript Object Notation) — это лёгкий текстовый формат для обмена данными, основанный на синтаксисе объектов JavaScript. JSON использует пары ключ-значение и поддерживает массивы, объекты, строки, числа, логические значения и null.

XML (eXtensible Markup Language) — это язык разметки, который использует теги для описания структуры данных. XML более гибкий и расширяемый — вы сами определяете теги.

Синтаксис и примеры

JSON пример

{
  "user": {
    "id": 123,
    "name": "John Doe",
    "email": "john@example.com",
    "isActive": true,
    "phone": null,
    "roles": ["admin", "user"]
  }
}

XML пример

<?xml version="1.0" encoding="UTF-8"?>
<user>
  <id>123</id>
  <name>John Doe</name>
  <email>john@example.com</email>
  <isActive>true</isActive>
  <phone></phone>
  <roles>
    <role>admin</role>
    <role>user</role>
  </roles>
</user>

Основные различия

1. Размер и объём данных

JSON:

  • Более компактный
  • Меньше символов
  • Быстрее передаётся по сети

XML:

  • Более многословный
  • Много тегов = больше символов
  • Медленнее передаётся

Сравнение размеров:

JSON: {"name":"John","age":30}  → 25 байт
XML:  <name>John</name><age>30</age> → 35 байт

2. Читаемость для человека

JSON:

  • Проще читать людям, знакомым с программированием
  • Структура похожа на объекты в коде
  • Меньше текста

XML:

  • Более читаемый для нетехнических людей
  • Теги явно описывают содержимое
  • Но более многословный

3. Парсинг

JSON:

  • Встроен в JavaScript (eval)
  • Быстро парсится большинством языков
  • Стандартные методы: JSON.parse()

XML:

  • Требует специальных парсеров
  • DOM (Document Object Model) парсирование
  • Обычно медленнее

4. Типы данных

JSON поддерживает:

  • Строки: "hello"
  • Числа: 123, 3.14
  • Логические значения: true, false
  • Null: null
  • Массивы: [1, 2, 3]
  • Объекты: {key: value}

XML:

  • Всё текстовое
  • Типы данных должны описываться схемой (XSD)
  • Нужно парсить и преобразовывать типы

Пример:

{
  "age": 30,        // JSON знает, что это число
  "active": true,   // JSON знает, что это boolean
  "balance": 1234.56 // JSON знает, что это число
}
<age>30</age>         <!-- XML видит текст "30" -->
<active>true</active> <!-- XML видит текст "true" -->
<balance>1234.56</balance> <!-- XML видит текст "1234.56" -->

5. Обработка и валидация

JSON:

  • Валидация через JSON Schema
  • Простая
  • Встроена в языки программирования

XML:

  • Валидация через XSD (XML Schema Definition)
  • Сложнее
  • Требует изучения XSD синтаксиса

6. Пространства имён (Namespaces)

JSON:

  • Нет встроенной поддержки
  • Нужно использовать префиксы вручную
{
  "soap:Envelope": {
    "soap:Body": { ... }
  }
}

XML:

  • Встроенная поддержка пространств имён
  • Стандартный способ избежать конфликтов
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    ...
  </soap:Body>
</soap:Envelope>

7. Комментарии

JSON:

  • Официально НЕ поддерживает комментарии
  • JSON5 расширение добавляет их
// Это коммент (не в стандартном JSON!)
{
  "key": "value"
}

XML:

  • Поддерживает комментарии стандартно
<!-- Это коммент -->
<key>value</key>

8. Атрибуты

JSON:

  • Нет атрибутов, только ключи в объекте
{
  "user": {
    "id": 123,
    "name": "John"
  }
}

XML:

  • Есть атрибуты и элементы
<user id="123">
  <name>John</name>
</user>

Когда использовать JSON

Используй JSON если:

  • REST API (стандарт в наше время)
  • Высокая пропускная способность нужна
  • Веб-приложения (JavaScript native)
  • Мобильные приложения (меньше трафика)
  • NoSQL базы данных (MongoDB, CouchDB)
  • Нужна скорость парсинга
  • Команда привыкла к JavaScript

Примеры:

GET /api/users/123
{
  "id": 123,
  "name": "John Doe",
  "email": "john@example.com",
  "createdAt": "2025-01-15T10:30:00Z"
}

Когда использовать XML

Используй XML если:

  • SOAP веб-сервисы (enterprise)
  • EDI (Electronic Data Interchange) — обмен между компаниями
  • Конфигурационные файлы (pom.xml, web.xml)
  • RSS/Atom ленты
  • Медицинские системы (HL7)
  • Устаревшие системы
  • Нужна гибкость пространств имён
  • Нужны мощные парсеры

Примеры:

<soap:Envelope xmlns:soap="...">  
  <soap:Body>
    <getUserRequest>
      <id>123</id>
    </getUserRequest>
  </soap:Body>
</soap:Envelope>

Сравнительная таблица

ХарактеристикаJSONXML
Размер данныхКомпактныйМногословный
Скорость парсингаБыстроМедленнее
Встроенные типыДаНет
КомментарииНет (базовый)Да
Пространства имёнНетДа
АтрибутыНетДа
ЧитаемостьСредняяХорошая
СовременностьСовременныйУстаревший
REST APIСтандартРедко
SOAPНетДа
КонфигиИногдаЧасто
NoSQLДаНет

Практические примеры преобразования

XML → JSON (обмен с веб-сервисом):

<products>
  <product>
    <id>1</id>
    <name>Laptop</name>
    <price>999.99</price>
  </product>
</products>

Преобразуется в:

{
  "products": [
    {
      "id": 1,
      "name": "Laptop",
      "price": 999.99
    }
  ]
}

Гибридный подход

В реальных системах часто используется оба формата:

Внутренние системы (SOAP, XML) ↔ Адаптер ↔ REST API (JSON) ↔ Мобильное приложение

Пример:

  • Backend работает с SOAP-сервисом SAP (XML)
  • Конвертирует в JSON для REST API
  • Frontend получает JSON
  • Всё работает гладко благодаря промежуточному слою

Заключение

В современной разработке JSON доминирует как стандарт для обмена данными между системами и приложениями. Он быстрее, компактнее и проще в работе.

Однако XML всё ещё жив в enterprise-системах, конфигурациях и при интеграции со старыми системами.

Как системный аналитик, вы должны понимать оба формата и уметь выбирать подходящий для конкретной задачи.

Что такое JSON и XML? Чем они отличаются? | PrepBro