Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
JSON — JavaScript Object Notation
JSON — это один из самых важных форматов для обмена данными в современной разработке. Как BA я постоянно работаю с JSON при документировании API и тестировании интеграций.
Определение
JSON (JavaScript Object Notation) — это текстовый формат для представления структурированных данных. Несмотря на название, JSON используется не только в JavaScript, но везде: Python, Java, C#, Go и т.д.
JSON состоит из:
- Объектов (фигурные скобки
{}) - Массивов (квадратные скобки
[]) - Значений (строки, числа, true/false, null)
Базовые элементы
Объект (Object)
Объект — это набор пар ключ-значение:
{
"name": "John",
"age": 30,
"email": "john@example.com"
}
Массив (Array)
Массив — это упорядоченный список значений:
[
"apple",
"banana",
"cherry"
]
Значения (Values)
JSON поддерживает 6 типов значений:
{
"string": "Hello World",
"number": 42,
"float": 3.14,
"boolean": true,
"null_value": null,
"nested_object": { "key": "value" }
}
Пример сложного JSON
Вот реальный пример JSON ответа от API платёжной системы:
{
"transaction_id": "txn_123456789",
"amount": 99.99,
"currency": "USD",
"status": "completed",
"created_at": "2026-03-26T10:30:00Z",
"customer": {
"id": "cust_001",
"name": "John Doe",
"email": "john@example.com"
},
"items": [
{
"product_id": "prod_001",
"product_name": "Laptop",
"quantity": 1,
"price": 99.99
},
{
"product_id": "prod_002",
"product_name": "Mouse",
"quantity": 2,
"price": 15.00
}
],
"payment_method": {
"type": "credit_card",
"last_four": "4242",
"brand": "Visa"
},
"shipping_address": {
"street": "123 Main St",
"city": "New York",
"state": "NY",
"postal_code": "10001",
"country": "USA"
},
"notes": null,
"metadata": {
"order_source": "web",
"coupon_applied": "SAVE10"
}
}
JSON vs XML
Им я часто объясняю разницу в команде:
Тот же пример в XML
<?xml version="1.0"?>
<transaction>
<transaction_id>txn_123456789</transaction_id>
<amount>99.99</amount>
<currency>USD</currency>
<status>completed</status>
<created_at>2026-03-26T10:30:00Z</created_at>
<customer>
<id>cust_001</id>
<name>John Doe</name>
<email>john@example.com</email>
</customer>
<items>
<item>
<product_id>prod_001</product_id>
<product_name>Laptop</product_name>
<quantity>1</quantity>
<price>99.99</price>
</item>
</items>
</transaction>
Сравнение:
| Параметр | JSON | XML |
|---|---|---|
| Размер | Компактнее | Больше благодаря тегам |
| Читаемость | Очень легко читать | Требует разбора структуры |
| Скорость парсинга | Быстрее | Медленнее |
| Поддержка атрибутов | Нет | Есть (<item attr="value">) |
| Валидация | JSON Schema | XML Schema/DTD |
| Использование | Web API, NoSQL | Legacy системы, конфиги |
Использование JSON в разработке
1. REST API
Очень часто API возвращают и принимают JSON:
Запрос GET /api/v1/customers/123
Ответ 200 OK:
{
"id": 123,
"name": "John",
"email": "john@example.com"
}
2. Конфигурационные файлы
MacOS использует JSON для конфигов (в частности package.json в Node.js):
{
"name": "my-app",
"version": "1.0.0",
"dependencies": {
"react": "^18.0.0",
"axios": "^1.4.0"
}
}
3. NoSQL базы данных
MongoDB хранит данные в JSON-подобном формате BSON:
db.users.insertOne({
"name": "John",
"age": 30,
"email": "john@example.com"
})
4. Логирование
Системы логирования часто используют JSON для структурированного вывода:
{
"timestamp": "2026-03-26T10:30:00Z",
"level": "ERROR",
"service": "payment-service",
"message": "Payment failed",
"error_code": "INSUFFICIENT_FUNDS",
"user_id": 123
}
Работа с JSON как BA
1. Документирование API
Я пишу примеры JSON для каждого endpoint:
## POST /api/v1/orders
Создание нового заказа
### Request Body
```json
{
"customer_id": 123,
"items": [
{"product_id": 1, "quantity": 2},
{"product_id": 2, "quantity": 1}
],
"shipping_address": "123 Main St"
}
Response 201 Created
{
"order_id": 5000,
"total": 199.99,
"status": "pending",
"created_at": "2026-03-26T10:30:00Z"
}
#### 2. Тестирование интеграций
При тестировании платёжной системы я создаю JSON запросы и проверяю ответы:
```json
// Запрос на платёж
{
"amount": 100.00,
"currency": "USD",
"customer_id": "cust_123",
"card": {
"number": "4242424242424242",
"exp_month": 12,
"exp_year": 2026,
"cvc": "123"
}
}
// Ожидаемый ответ
{
"success": true,
"transaction_id": "txn_abc123",
"amount_charged": 100.00
}
3. Моделирование данных
Я часто создаю JSON примеры для различных сценариев:
// Успешный платёж
{
"status": "success",
"amount": 100.00
}
// Ошибка при платеже
{
"status": "error",
"error_code": "CARD_DECLINED",
"error_message": "Карта отклонена"
}
// Платёж требует подтверждения
{
"status": "pending_confirmation",
"confirmation_code": "conf_xyz789"
}
Синтаксис JSON
Правила которые нужно соблюдать
-
Ключи должны быть в кавычках:
✓ { "name": "John" } ✗ { name: "John" } // JavaScript, не JSON -
Последний элемент без запятой:
✓ { "a": 1, "b": 2 } ✗ { "a": 1, "b": 2, } // Ошибка -
Строки в двойных кавычках:
✓ { "name": "John" } ✗ { "name": 'John' } // Одинарные кавычки не валидны -
Только определённые типы значений:
✓ { "count": 42, "price": 3.14, "active": true, "note": null } ✗ { "date": new Date() } // Функции не поддерживаются ✗ { "regex": /^test$/ } // Регулярные выражения не поддерживаются
Валидация JSON
Жаз использую инструменты для проверки валидности JSON:
Online validators
В коде
Python пример проверки:
import json
try:
data = json.loads(json_string)
print("Valid JSON")
except json.JSONDecodeError as e:
print(f"Invalid JSON: {e}")
JSON Schema
Dля документирования структуры JSON используется JSON Schema:
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"age": {
"type": "integer",
"minimum": 0,
"maximum": 150
},
"email": {
"type": "string",
"format": "email"
},
"tags": {
"type": "array",
"items": { "type": "string" }
}
},
"required": ["name", "email"]
}
Этот schema означает:
- Объект имеет поля name, age, email, tags
- name должно быть строкой
- age должно быть числом от 0 до 150
- email должно быть валидным email форматом
- tags это массив строк
- Обязательные поля: name, email
Практический пример из моего проекта
При разработке CRM я задокументировал все структуры JSON:
// Customer object
{
"id": "cust_123",
"first_name": "John",
"last_name": "Doe",
"email": "john@example.com",
"phone": "+1234567890",
"created_at": "2026-01-01T00:00:00Z",
"insurance_policies": [
{
"policy_id": "pol_456",
"type": "auto",
"status": "active",
"premium": 1200.00
}
],
"address": {
"street": "123 Main St",
"city": "New York",
"state": "NY",
"zip": "10001"
}
}
Заключение
JSON — это universal формат для обмена структурированными данными в современной разработке. Как BA я должен:
- Понимать структуру JSON
- Писать примеры JSON для документирования
- Валидировать JSON при тестировании интеграций
- Использовать JSON Schema для спецификации структур
JSON кажется простым, но правильное его использование критично для успеха технических проектов.