类 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 |
属性详细信息
是否抛出 yii\web\BadRequestHttpException 如果主体是无效的 JSON
方法详细信息
解析 HTTP 请求主体。
public 数组|stdClass parse ( $rawBody, $contentType ) | ||
$rawBody | 字符串 |
原始 HTTP 请求主体。 |
$contentType | 字符串 |
为请求主体指定的 MIME 类型。 |
返回值 | 数组|stdClass |
从请求主体解析的参数 |
---|---|---|
抛出 | yii\web\BadRequestHttpException |
如果主体包含无效的 JSON 并且 $throwException 为 |
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 [];
}
}
注册 或 登录 以发表评论。