Блог Горошко Андрея 1C-Битрикс Работа с JSON в D7: Класс Bitrix\Main\Web\Json и его преимущества

Работа с JSON в D7: Класс Bitrix\Main\Web\Json и его преимущества

PHP имеет встроенные функции для работы с JSON, но в Битрикс D7 есть свой класс-обертка \Bitrix\Main\Web\Json, который рекомендуется использовать в рамках фреймворка.

Преимущества Bitrix\Main\Web\Json

  1. Обработка ошибок: Метод decode выбрасывает исключение ArgumentException при ошибке парсинга, в то время как старый json_decode просто возвращал null (до PHP 7.3). Это позволяет сразу ловить ошибки.
  2. Кодировка: Метод encode автоматически конвертирует данные в UTF-8 перед кодированием (если сайт работает в cp1251), так как JSON обязан быть в UTF-8. Стандартный json_encode вернет пустую строку или ошибку на кириллице в cp1251.
  3. Дефолтные настройки: encode по умолчанию использует флаг JSON_HEX_TAG|JSON_HEX_AMP|…, защищая от XSS при вставке JSON в HTML.

Примеры использования

Кодирование (Array -> JSON):

use Bitrix\Main\Web\Json;

$data = [
    'name' => 'Иван',
    'active' => true,
    'link' => '<a href="#">Link</a>' // Будет экранировано
];

try {
    // encode($data, $options = null)
    $jsonString = Json::encode($data); 
    echo $jsonString;
} catch (\Bitrix\Main\ArgumentException $e) {
    echo "Ошибка кодирования: " . $e->getMessage();
}

Декодирование (JSON -> Array):

use Bitrix\Main\Web\Json;

$json = '{"name": "Иван", "id": 1}';
$badJson = '{error}';

try {
    // decode($data)
    $result = Json::decode($json);
    print_r($result);
    
    $result2 = Json::decode($badJson); // Выбросит исключение
} catch (\Bitrix\Main\ArgumentException $e) {
    // Ловим ошибку синтаксиса JSON
    echo "Некорректный JSON: " . $e->getMessage();
}

Вывод:
Класс Bitrix\Main\Web\Json — это безопасная и надежная альтернатива нативным функциям, особенно на проектах в кодировке windows-1251.

Он гарантирует валидный UTF-8 JSON на выходе и понятные исключения при ошибках на входе.

Bitrix JSON, Web\Json, json_encode битрикс, json_decode, JSON_UNESCAPED_UNICODE, обработка json ошибок.

Похожая задача в бизнесе?

Помогу автоматизировать процессы и внедрить ИИ

Меня зовут Андрей Горошко. Я Full-stack разработчик и эксперт по 1С-Битрикс. Настраиваю CRM Битрикс24, разрабатываю защищенные API и создаю умных ИИ-агентов для автоматизации рутины.

Добавить комментарий

Related Post

Получить поля и настройки свойства отгрузки для определенного типа свойств sa…Получить поля и настройки свойства отгрузки для определенного типа свойств sa…

Оптимизация производительности и безопасности — залог успешного проекта на 1С-Битрикс. Данный материал посвящен практическому применению «Получить поля и настройки свойства отгрузки для определенного типа свойств sa…». Мы подготовили подробный разбор

Отладка и Логирование в Битрикс: Инструменты разработчикаОтладка и Логирование в Битрикс: Инструменты разработчика

Ни один разработчик не может обойтись без инструментов отладки. В Битрикс есть несколько способов посмотреть, что происходит «под капотом», от самых простых до продвинутых. 1. «Золотое правило»: print_r только для админа Самый

Сколько стоит комплексный предрелизный стресс-аудит сайта на 1С-БитриксСколько стоит комплексный предрелизный стресс-аудит сайта на 1С-Битрикс

Прозрачный расчет бюджета, честные сметы и понимание совокупной стоимости владения (TCO) — залог успешного сотрудничества и окупаемости инвестиций в веб-разработку на 1С-Битрикс. В статье «Сколько стоит комплексный предрелизный стресс-аудит сайта