Class yii\web\JsonParser

Inheritanceyii\web\JsonParser
Implementsyii\web\RequestParserInterface
Available since version2.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

Hide inherited 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

Hide inherited methods

Method Description Defined By
parse() Parses a HTTP request body. yii\web\JsonParser

Property Details

Hide inherited properties

$asArray public property

Whether to return objects in terms of associative arrays.

public boolean $asArray true
$throwException public property

Whether to throw a yii\web\BadRequestHttpException if the body is invalid JSON

public boolean $throwException true

Method Details

Hide inherited methods

parse() public method

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 true.

                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 [];
    }
}