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

В чем разница между JSON и XML?

1.3 Junior🔥 241 комментариев
#API тестирование#Сети и протоколы

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

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

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

JSON vs XML

Определение

JSON (JavaScript Object Notation) — легкий формат для обмена данными

XML (eXtensible Markup Language) — язык разметки для структурирования данных

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

1. Синтаксис

JSON:

{
  "users": [
    {
      "id": 1,
      "name": "John",
      "email": "john@test.com"
    }
  ]
}

XML:

<users>
  <user>
    <id>1</id>
    <name>John</name>
    <email>john@test.com</email>
  </user>
</users>

2. Размер

JSON — компактнее (меньше символов)

XML — многословнее (теги повторяются)

3. Человекочитаемость

JSON — более читаемый для современных разработчиков

XML — самодокументирующийся формат

4. Поддержка типов данных

JSON:

  • String (строка)
  • Number (число)
  • Boolean (логическое)
  • Null
  • Array (массив)
  • Object (объект)

XML:

  • Все значения — строки
  • Нужно вручную парсить типы

5. Атрибуты

JSON — нет атрибутов

XML — есть атрибуты:

<user id="1" status="active">
  <name>John</name>
</user>

Практические примеры

Парсинг JSON:

import json

json_data = '{"name": "John", "age": 30}'
data = json.loads(json_data)
print(data["name"])  # John

# Или с requests
import requests
response = requests.get("https://api.example.com/users")
data = response.json()

Парсинг XML:

import xml.etree.ElementTree as ET

xml_data = '<user><name>John</name></user>'
root = ET.fromstring(xml_data)
name = root.find('name').text
print(name)  # John

Тестирование

JSON API тест:

def test_json_response():
    response = requests.get("https://api.example.com/users")
    assert response.status_code == 200
    
    data = response.json()
    assert isinstance(data, list)
    assert data[0]["id"] == 1

XML API тест:

def test_xml_response():
    response = requests.get("https://api.example.com/users.xml")
    assert response.status_code == 200
    
    root = ET.fromstring(response.content)
    users = root.findall("user")
    assert len(users) > 0

Сравнение

ХарактеристикаJSONXML
РазмерКомпактныйМногословный
Скорость парсингаБыстрееМедленнее
Типы данныхВстроенныеСтроки
Валидация схемыJSON SchemaXSD
КомментарииНетЕсть
ПоддержкаВсе языкиВсе языки

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

JSON:

  • REST API (современный стандарт)
  • Веб-приложения
  • Конфигурационные файлы (package.json, config.json)
  • Когда нужна компактность

XML:

  • SOAP API
  • Конфигурационные файлы (web.xml, pom.xml)
  • XHTML
  • Когда нужны атрибуты и сложная структура
  • Документы (Office, PDF)

Современный тренд

JSON стал стандартом для API. XML используется реже, но все еще применяется в enterprise решениях и конфигурациях.

Для QA тестирования: JSON более распространен в современных API, но важно уметь работать с обоими форматами.