0 关注者

类 yii\web\JsonParser

继承yii\web\JsonParser
实现yii\web\RequestParserInterface
可用版本2.0
源代码 https://github.com/yiisoft/yii2/blob/master/framework/web/JsonParser.php

使用 yii\helpers\Json::decode() 解析原始 HTTP 请求。

要为 JSON 请求启用解析,您可以使用此类配置 yii\web\Request::$parsers

'request' => [
    'parsers' => [
        'application/json' => 'yii\web\JsonParser',
    ]
]

公共属性

隐藏继承的属性

属性 类型 描述 定义于
$asArray 布尔值 是否以关联数组的形式返回对象。 yii\web\JsonParser
$throwException 布尔值 是否抛出 yii\web\BadRequestHttpException 如果主体是无效的 JSON yii\web\JsonParser

公共方法

隐藏继承的方法

方法 描述 定义于
parse() 解析 HTTP 请求主体。 yii\web\JsonParser

属性详细信息

隐藏继承的属性

$asArray 公共属性

是否以关联数组的形式返回对象。

public 布尔值 $asArray true
$throwException 公共属性

是否抛出 yii\web\BadRequestHttpException 如果主体是无效的 JSON

public 布尔值 $throwException true

方法详细信息

隐藏继承的方法

parse() 公共方法

解析 HTTP 请求主体。

public 数组|stdClass parse ( $rawBody, $contentType )
$rawBody 字符串

原始 HTTP 请求主体。

$contentType 字符串

为请求主体指定的 MIME 类型。

返回值 数组|stdClass

从请求主体解析的参数

抛出 yii\web\BadRequestHttpException

如果主体包含无效的 JSON 并且 $throwExceptiontrue

                public function parse($rawBody, $contentType)
{
    // converts JSONP to JSON
    if (strpos($contentType, 'application/javascript') !== false) {
        $rawBody = preg_filter('/(^[^{]+|[^}]+$)/', '', $rawBody);
    }
    try {
        $parameters = Json::decode($rawBody, $this->asArray);
        return $parameters === null ? [] : $parameters;
    } catch (InvalidArgumentException $e) {
        if ($this->throwException) {
            throw new BadRequestHttpException('Invalid JSON data in request body: ' . $e->getMessage());
        }
        return [];
    }
}