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

Что такое JSON?

1.0 Junior🔥 241 комментариев
#API тестирование#Теория тестирования

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

🐱
deepseek-v3.2PrepBro AI6 апр. 2026 г.(ред.)

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

Что такое JSON (JavaScript Object Notation)

JSON — это текстовый формат обмена данными, основанный на синтаксисе объектов JavaScript, но независимый от языка программирования. Несмотря на своё происхождение, JSON используется повсеместно в различных технологиях для передачи структурированной информации, особенно в веб-приложениях и API.

Ключевые характеристики JSON

  • Человекочитаемый (Human-readable): Данные представлены в виде обычного текста, который легко прочитать и понять человеку.
  • Легковесный (Lightweight): По сравнению с другими форматами (например, XML), JSON имеет минимальный объём служебных символов, что делает передачу данных быстрее.
  • Языковая независимость: Может использоваться с любым языком программирования (Python, Java, C#, PHP и т.д.), для которого существуют парсеры и генераторы JSON.
  • Самодостаточность (Self-describing): Структура и имена полей обычно понятны из контекста данных.

Базовая структура и синтаксис

JSON строится на двух фундаментальных структурах:

  1. Коллекция пар "ключ-значение" (Объект): Оборачивается в фигурные скобки {}. Ключ — это всегда строка в двойных кавычках, за которой следует двоеточие и значение.
  2. Упорядоченный список значений (Массив): Оборачивается в квадратные скобки []. Значения в массиве разделяются запятыми.

Допустимые типы данных для значений:

  • Строка: "текст" (обязательно двойные кавычки)
  • Число: 42, 3.14, -7
  • Объект: { ... }
  • Массив: [ ... ]
  • Логический (boolean): true или false
  • Null: null

Пример JSON-объекта, представляющего информацию о пользователе:

{
  "id": 12345,
  "username": "ivan_ivanov",
  "isActive": true,
  "email": "ivan@example.com",
  "roles": ["user", "editor"],
  "profile": {
    "firstName": "Иван",
    "lastName": "Иванов",
    "age": 30
  },
  "tags": null
}

Применение в автоматизации тестирования (QA Automation)

Для QA-инженера работа с JSON — ежедневная рутина. Вот ключевые сценарии:

  • Тестирование REST/SOAP API: JSON — основной формат для передачи данных в запросах (телах POST/PUT/PATCH) и ответах. Автоматизация проверяет:
    *   Структуру ответа (соответствие схеме).
    *   Значения конкретных полей.
    *   Коды состояний HTTP вместе с JSON-телом ошибки.
  • Конфигурация тестов: Настройки фреймворков, данные для подключения к базам данных или внешним сервисам часто хранятся в .json-файлах.
  • Хранение тестовых данных: Большие наборы данных (например, каталог продуктов, пользователи) удобно хранить в JSON для последующей загрузки в тесты.
  • Верификация данных: Сравнение ожидаемого (expected) и фактического (actual) JSON — основа многих assertions.
  • Генерация запросов: Динамическое создание JSON-объектов для отправки в API на основе шаблонов или случайных данных (faker).

Работа с JSON в коде автотестов (на примере Python)

Стандартная библиотека Python предоставляет модуль json для кодирования (сериализации) и декодирования (десериализации).

import json

# ДЕСЕРИАЛИЗАЦИЯ: преобразование строки JSON в Python-объект (dict/list)
json_string = '{"name": "Alice", "age": 25, "hobbies": ["reading", "cycling"]}'
python_dict = json.loads(json_string)
print(type(python_dict))  # <class 'dict'>
print(python_dict["hobbies"][0])  # reading

# Чтение JSON из файла
with open('user_data.json', 'r', encoding='utf-8') as file:
    user_data = json.load(file)

# СЕРИАЛИЗАЦИЯ: преобразование Python-объекта в строку JSON
new_data = {
    "id": 1001,
    "status": "processed",
    "items": [{"sku": "A123", "qty": 2}]
}
json_output_string = json.dumps(new_data, indent=2, ensure_ascii=False)  # pretty print
print(json_output_string)

# Запись JSON в файл
with open('response.json', 'w', encoding='utf-8') as file:
    json.dump(new_data, file, indent=2)

Важные инструменты и библиотеки для QA

  • Валидаторы и просмотрщики: Online-сервисы (JSON Formatter & Validator), плагины для браузеров (JSON Viewer) и IDE для удобного чтения вложенных структур.
  • Схемы JSON (JSON Schema): Мощный инструмент для описания структуры, типов данных и обязательности полей в JSON. Используется для валидации ответов API.
  • Библиотеки для работы с JSONPath/XPath для JSON: Позволяют извлекать конкретные значения из сложного JSON-документа с помощью выражений, аналогичных XPath (например, $.users[0].email).
    *   Python: `jsonpath-ng`
    *   Java: `Jayway JsonPath`

JSON vs. XML

ХарактеристикаJSONXML
ЧитаемостьВыше, менее многословенНиже, много тегов и атрибутов
РазмерОбычно меньшеОбычно больше из-за закрывающих тегов
ОбработкаБыстрее парситсяПарсинг сложнее и медленнее
Типы данныхОграниченный базовый наборВсе данные — строки, типы требуют схем
ПоддержкаИдеален для данных и APIШире (документы, конфиги, данные), но для API используется реже

Заключение Для QA Automation инженера JSON — это не просто аббревиатура, а один из основных рабочих инструментов. Понимание его структуры, умение его создавать, парсить, валидировать и сравнивать — это ключевой навык для эффективного тестирования современных API и работы с конфигурациями. Использование связанных технологий, таких как JSON Schema, поднимает автоматизацию проверок данных на профессиональный уровень, обеспечивая надежность и поддерживаемость тестов.

Что такое JSON? | PrepBro