Есть в Битрикс метод CUtil::PhpToJSObject, который повторяет json_encode, но по-своему, создавая невалидный JSON с одинарными кавычками. Для некоторых целей это подходит, но JSON.parse такой объект не может обработать.

В D7 этот же функционал реализован более корректно в виде Bitrix\Main\Web\Json::encode, который в UTF-режиме использует json_encode и выдаёт валидный JSON. Но во многих местах в Битрикс всё ещё используется CUtil::PhpToJSObject и приходится использовать следующий костыль.

В CUtil::PhpToJSObject оставлена возможность переопределить преобразование, определив глобальную функцию bx_js_encode. Вставляем в любом удобном месте функцию:

function bx_js_encode($arData, $bWS, $bSkipTilda, $bExtType)
{
   // Два варианта на выбор:
   return Bitrix\Main\Web\Json::encode($arData);
   // ИЛИ
   return json_encode($arData);
}