WP_REST_Request::parse_json_params() protected WP 4.4.0
Parses the JSON parameters.
Avoids parsing the JSON data until we need to access it.
{} It's a method of the class: WP_REST_Request{}
No Hooks.
Return
true/WP_Error. True if the JSON data was passed or no JSON data was provided, WP_Error if invalid JSON was passed.
Usage
// protected - for code of main (parent) or child class $result = $this->parse_json_params();
Changelog
Since 4.4.0 | Introduced. |
Since 4.7.0 | Returns error instance if value cannot be decoded. |
Code of WP_REST_Request::parse_json_params() WP REST Request::parse json params WP 5.6
protected function parse_json_params() {
if ( $this->parsed_json ) {
return true;
}
$this->parsed_json = true;
// Check that we actually got JSON.
if ( ! $this->is_json_content_type() ) {
return true;
}
$body = $this->get_body();
if ( empty( $body ) ) {
return true;
}
$params = json_decode( $body, true );
/*
* Check for a parsing error.
*/
if ( null === $params && JSON_ERROR_NONE !== json_last_error() ) {
// Ensure subsequent calls receive error instance.
$this->parsed_json = false;
$error_data = array(
'status' => WP_Http::BAD_REQUEST,
'json_error_code' => json_last_error(),
'json_error_message' => json_last_error_msg(),
);
return new WP_Error( 'rest_invalid_json', __( 'Invalid JSON body passed.' ), $error_data );
}
$this->params['JSON'] = $params;
return true;
}