Есть в Битрикс метод 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);
}