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

Что такое JSON?

1.0 Junior🔥 181 комментариев
#Архитектура систем#Интеграции и API

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

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

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

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>

Сравнение:

ПараметрJSONXML
РазмерКомпактнееБольше благодаря тегам
ЧитаемостьОчень легко читатьТребует разбора структуры
Скорость парсингаБыстрееМедленнее
Поддержка атрибутовНетЕсть (<item attr="value">)
ВалидацияJSON SchemaXML Schema/DTD
ИспользованиеWeb API, NoSQLLegacy системы, конфиги

Использование 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

Правила которые нужно соблюдать

  1. Ключи должны быть в кавычках:

    { "name": "John" }{ name: "John" }  // JavaScript, не JSON
    
  2. Последний элемент без запятой:

    { "a": 1, "b": 2 }{ "a": 1, "b": 2, }  // Ошибка
    
  3. Строки в двойных кавычках:

    { "name": "John" }{ "name": 'John' }  // Одинарные кавычки не валидны
    
  4. Только определённые типы значений:

    { "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 кажется простым, но правильное его использование критично для успеха технических проектов.

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