Типы данных в API

Справочник тестировщика: типы JSON и OpenAPI, их форматы и что с ними проверять

⬇ Скачать PDF

База: типы данных JSON

Любой ответ API — это JSON, а в JSON всего шесть типов:

ТипПример
string"John"
number25.5
object{ "id": 1 }
array[1, 2, 3]
booleantrue
nullnull

OpenAPI уточняет их через ключевые слова: integer — целое, format — подтип (дата, uuid, email…), а также ограничения: minimum, maxLength, pattern, enum и другие. Типы полей описаны в документации — это часть контракта API, и каждое отклонение от них — баг.

String — строка

"name": "John Doe"

Форматы (format)

Примеры

"John Doe"            // валидно
""                      // пустая строка — допустима ли по доке?
"John123"             // цифры, если pattern только буквы
"  John  "            // пробелы по краям — триммит ли сервер?
"John" O'Neil"       // кавычки внутри — экранирование
"aaaaaaaa…(300 симв.)" // превышение maxLength
"Иван Петров"          // другая раскладка/юникод

Что проверять

Integer — целое число

"age": 25

Форматы

Примеры

25                      // валидно
0                       // ноль — допустим ли по доке?
-1                      // отрицательное при minimum: 0
25.5                    // дробное — не целое
"25"                    // число строкой — классика
2147483648             // переполнение int32

Что проверять

Number — дробное число

"price": 19.99

Форматы

Примеры

19.99                   // валидно
19.999                  // лишний знак при шаге 0.01
19,99                   // запятая вместо точки
-42.7                   // отрицательная цена?
0.1 + 0.2 = 0.30000000000000004 // бинарная арифметика
1234567.891            // точность float: хвост потеряется
1e10                    // экспоненциальная запись

Что проверять

Boolean — логическое

"is_active": true

Примеры

true                     // валидно
false                    // валидно
"true"                   // строка вместо булева
1                        // число вместо булева
"yes"                    // сервер кастует? контракт должен решать
null                     // допустим ли null для обязательного флага

Что проверять

Array — массив

"items": [ {"id": 1}, {"id": 2} ]

Примеры

[]                       // пустой — валидный ответ, не ошибка
[1, 2, 3]                // элементы одного типа
[1, "two", 3]            // смешанные типы
[1, 1, 1]                // дубликаты — допустимы ли?
[[1], [2]]               // вложенные массивы по схеме?
null                     // null вместо массива

Что проверять

Object — объект

"user": { "id": 1, "name": "John", "email": null }

Примеры

{ "id": 1, "name": "John" }        // валидно
{}                                   // пустой объект без required-полей
{ "id": 1 }                          // нет обязательного name
{ "id": 1, "name": "John", "hack": 1 } // лишнее поле
{ "Name": "John", "id": 1 }          // регистр ключа
"user": null                         // null вместо объекта

Что проверять

Null — отсутствие значения

"middle_name": null

Примеры: это РАЗНЫЕ вещи

null        // явный null
(нет поля)  // поле вообще отсутствует в ответе
""         // пустая строка
0          // ноль
[]         // пустой массив

Что проверять

Enum — перечисление

"status": "active"   // допустимы только: active, blocked, deleted

Примеры

"active"     // валидно
"ACTIVE"     // регистр
"unknown"    // значение вне списка
""           // пустая строка
null         // null вместо enum

Что проверять

Дата и время

"created_at": "2026-08-23T12:00:00Z"

Примеры

"2026-08-23"                 // дата
"2026-08-23T12:00:00Z"       // UTC (суффикс Z)
"2026-08-23T15:00:00+03:00"  // со смещением таймзоны
"2026-08-23T12:00:00.123Z"   // миллисекунды
"23.08.2026"                 // локальный формат вместо ISO
"2026-13-45"                 // невалидные месяц и день
"2025-02-29"                 // 29 февраля в невисокосный год

Что проверять

UUID и другие идентификаторы

"id": "550e8400-e29b-41d4-a716-446655440000"

Примеры

"550e8400-e29b-41d4-a716-446655440000"  // валидный UUID v4
"550e8400"                               // слишком короткий
"550e8400-e29b-41d4-a716-44665544000G"  // буква G — не hex
"550e8400e29b41d4a716446655440000"       // без дефисов
null                                       // null вместо id

Что проверять

Комбинации схем

Встречаются в сложных ответах: поле может быть строкой ИЛИ объектом. Проверяй все ветви каждой комбинации.

Типы данных — часть контракта API

Документация описывает не только методы, но и типы каждого поля. Любое отклонение — баг.
Больше полезного про тестирование — в телеграм-канале @eddytester.