0 follower

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 ( string $rawBody, string $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 []; } }