• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/lib/web/jwt.php
  • Класс: BitrixMainWebJWT
  • Вызов: JWT::jsonDecode
static function jsonDecode($input)
{
	if (version_compare(PHP_VERSION, '5.4.0', '>=') && !(defined('JSON_C_VERSION') && PHP_INT_SIZE > 4)) {
		/** In PHP >=5.4.0, json_decode() accepts an options parameter, that allows you
		 * to specify that large ints (like Steam Transaction IDs) should be treated as
		 * strings, rather than the PHP default behaviour of converting them to floats.
		 */
		$obj = json_decode($input, false, 512, JSON_BIGINT_AS_STRING);
	} else {
		/** Not all servers will support that, however, so for older versions we must
		 * manually detect large ints in the JSON string and quote them (thus converting
		 *them to strings) before decoding, hence the preg_replace() call.
		 */
		$max_int_length = strlen((string) PHP_INT_MAX) - 1;
		$json_without_bigints = preg_replace('/:s*(-?d{'.$max_int_length.',})/', ': "$1"', $input);
		$obj = json_decode($json_without_bigints);
	}

	if ($errno = json_last_error()) {
		static::handleJsonError($errno);
	} elseif ($obj === null && $input !== 'null') {
		throw new DomainException('Null result with non-null input');
	}
	return $obj;
}