Class yii\web\JsonParser
Inheritance | yii\web\JsonParser |
---|---|
Implements | yii\web\RequestParserInterface |
Available since version | 2.0 |
Source Code | https://github.com/yiisoft/yii2/blob/master/framework/web/JsonParser.php |
Parses a raw HTTP request using yii\helpers\Json::decode().
To enable parsing for JSON requests you can configure yii\web\Request::$parsers using this class:
'request' => [
'parsers' => [
'application/json' => 'yii\web\JsonParser',
]
]
Public Properties
Property | Type | Description | Defined By |
---|---|---|---|
$asArray | boolean | Whether to return objects in terms of associative arrays. | yii\web\JsonParser |
$throwException | boolean | Whether to throw a yii\web\BadRequestHttpException if the body is invalid JSON | yii\web\JsonParser |
Public Methods
Method | Description | Defined By |
---|---|---|
parse() | Parses a HTTP request body. | yii\web\JsonParser |
Property Details
Whether to return objects in terms of associative arrays.
Whether to throw a yii\web\BadRequestHttpException if the body is invalid JSON
Method Details
Parses a HTTP request body.
public array|stdClass parse ( $rawBody, $contentType ) | ||
$rawBody | string |
The raw HTTP request body. |
$contentType | string |
The content type specified for the request body. |
return | array|stdClass |
Parameters parsed from the request body |
---|---|---|
throws | yii\web\BadRequestHttpException |
if the body contains invalid json and $throwException is |
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 [];
}
}