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

В каких скобках записывал JSON

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

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

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

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

Ответ на вопрос о синтаксисе JSON

JSON (JavaScript Object Notation) использует **четыре основных типа скобок** для структурирования данных. Это строгий стандарт, и неправильное использование скобок приводит к невалидному JSON.

Основные скобки в JSON

  1. Фигурные скобки {} — обозначают объект (в других языках часто называют dictionary, map или hash).
    *   Используются для коллекции **пар "ключ: значение"**.
    *   Ключ всегда должен быть строкой в двойных кавычках.
    *   Пример объекта:
    ```json
    {
        "name": "Иван",
        "age": 30,
        "isActive": true
    }
    ```

2. Квадратные скобки [] — обозначают массив (список или последовательность).

    *   Используются для упорядоченного списка значений.
    *   Элементы массива могут быть любого типа данных JSON.
    *   Пример массива:
    ```json
    ["apple", "banana", "orange"]
    ```

Вспомогательные символы

Для завершения структуры данных используются:

  • Двойные кавычки " — обязательны для обозначения строк. Ключи в объектах также всегда заключаются в двойные кавычки.

    {
        "city": "Москва" // "city" и "Москва" — строки в кавычках
    }
    
  • Запятая , — разделяет элементы внутри объектов и массивов.

    [1, 2, 3] // Запятые между элементами массива
    

Полный пример JSON с использованием всех скобок

{
    "company": "TechCorp",
    "employees": [
        {
            "id": 1,
            "name": "Алексей",
            "skills": ["Java", "Python", "Docker"]
        },
        {
            "id": 2,
            "name": "Мария",
            "skills": ["JavaScript", "React", "Node.js"]
        }
    ],
    "projects": ["Alpha", "Beta"]
}

Разбор примера:

  • Внешние {} — главный объект JSON.
  • "employees": [...] — значение ключа "employees" является массивом ([]), содержащим два объекта.
  • Каждый объект в массиве employees также окружен {}.
  • Значение ключа "skills" внутри этих объектов — это массив строк ([]).
  • Значение ключа "projects" — это другой массив строк.

Критические ошибки и важные правила

  • Строки только в двойных кавычках. Использование одинарных кавычек (') не допускается стандартом JSON.
    *   ❌ НЕВЕРНО: `{'key': 'value'}`
    *   ✅ ВЕРНО: `{"key": "value"}`

  • Ключи объекта всегда строки. Они не могут быть числами, булевыми значениями или другими типами без кавычек.
    *   ❌ НЕВЕРНО: `{123: "test"}`
    *   ✅ ВЕРНО: `{"123": "test"}` (число преобразовано в строковый ключ)

  • Запятая после последнего элемента. Добавление запятой после последнего элемента в объекте или массиве является ошибкой в строгом стандарте (хотя некоторые парсеры могут это допускать).
    *   ❌ НЕВЕРНО:
    ```json
    {
        "a": 1,
        "b": 2,
    }
    ```
    *   ✅ ВЕРНО:
    ```json
    {
        "a": 1,
        "b": 2
    }
    ```

Почему это важно для QA Engineer?

  1. Валидация данных: При тестировании API (REST, GraphQL) QA обязан проверять, что ответ сервера является валидным JSON. Неправильные скобки или кавычки приводят к ошибкам парсинга на стороне клиента.
  2. Написание тестовых данных: Часто тестовые сценарии требуют подготовки JSON-файлов (для отправки в телах запросов, конфигураций). Знание синтаксиса позволяет создавать их без ошибок.
  3. Анализ логов и ошибок: Ошибки формата "Unexpected token" или "JSON parsing error" часто связаны именно с проблемами в скобках, кавычках или запятых. QA должен быстро локализовать такие проблемы.
  4. Работа с инструментами: Понимание структуры помогает эффективно использовать инструменты для проверки JSON (например, онлайн валидаторы, плагины в IDE, библиотеки типа jq для командной строки).

Вывод: JSON использует фигурные скобки для объектов, квадратные для массивов и строго требует двойных кавычек для строк. Это фундаментальное знание для QA, работающего с любыми веб-сервисами, API или системами, передающими данные в этом универсальном формате.