framework/helpers/BaseJson.php
public static function encode($value, $options = 320)
    {
        $expressions = [];
        $value = static::processData($value, $expressions, uniqid('', true));
        set_error_handler(function () {
            static::handleJsonError(JSON_ERROR_SYNTAX);
        }, E_WARNING);
        $json = json_encode($value, $options);
        restore_error_handler();
        static::handleJsonError(json_last_error());

        return $expressions === [] ? $json : strtr($json, $expressions);
    }
public static function encode($value, $options = 320)
    {
        $expressions = [];
        $value = static::processData($value, $expressions, uniqid('', true));
        set_error_handler(function () {
            static::handleJsonError(JSON_ERROR_SYNTAX);
        }, E_WARNING);
        $json = json_encode($value, $options);
        restore_error_handler();
        static::handleJsonError(json_last_error());

        return $expressions === [] ? $json : strtr($json, $expressions);
    }
Encodes the given value into a JSON string.

The method enhances `json_encode()` by supporting JavaScript expressions.
In particular, the method will not encode a JavaScript expression that is
represented in terms of a [[JsExpression]] object.

Note that data encoded as JSON must be UTF-8 encoded according to the JSON specification.
You must ensure strings passed to this method have proper encoding before passing them.

@param mixed $value the data to be encoded.
@param int $options the encoding options. For more details please refer to
<https://secure.php.net/manual/en/function.json-encode.php>. Default is `JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE`.
@return string the encoding result.
@throws InvalidArgumentException if there is any encoding error.