w3resource

PHP JSON Exercises : Display JSON decode errors

PHP JSON: Exercise-4 with Solution

Write a PHP function to display JSON decode errors.

Sample Solution:

PHP Code:

<?php
function json_error_message($json_str)
{
$json[] = $json_str;
echo $json;
foreach ($json as $string)
{
echo 'Decoding: ' . $string."\n";
json_decode($string);

switch (json_last_error())
{
case JSON_ERROR_NONE:
echo ' - No errors'."\n";
break;
case JSON_ERROR_DEPTH:
echo ' - Maximum stack depth exceeded'."\n";
break;
case JSON_ERROR_STATE_MISMATCH:
echo ' - Underflow or the modes mismatch'."\n";
break;
case JSON_ERROR_CTRL_CHAR:
echo ' - Unexpected control character found'."\n";
break;
case JSON_ERROR_SYNTAX:
echo ' - Syntax error, malformed JSON'."\n";
break;
case JSON_ERROR_UTF8:
echo ' - Malformed UTF-8 characters, possibly incorrectly encoded'."\n";
break;
default:
echo ' - Unknown error'."\n";
break;
}
}
}
json_error_message('{"color1": "Red Color"}');
?>

Sample Output:

PHP Notice:  Array to string conversion in /home/students/98837c40-6
86c-11e7-a315-21e19fc8c51e.php on line 5                            
ArrayDecoding: {"color1": "Red Color"}                              
 - No errors

Flowchart :

Flowchart: Display JSON decode errors

PHP Code Editor:

Have another way to solve this solution? Contribute your code (and comments) through Disqus.

Previous: Write a PHP script to get JSON representation of a value from an array.
Next: PHP Searching and Sorting Algorithm Exercises Home.

What is the difficulty level of this exercise?



PHP: Tips of the Day

Get first key in a (possibly) associative array?

Starting from PHP 7.3, there is a new built in function called array_key_first() which will retrieve the first key from the given array without resetting the internal pointer. Check out the documentation for more info.

You can use reset and key:

reset($array);
$first_key = key($array);

It's essentially the same as your initial code, but with a little less overhead, and it's more obvious what is happening.

Just remember to call reset, or you may get any of the keys in the array. You can also use end instead of reset to get the last key.

If you wanted the key to get the first value, reset actually returns it:

$first_value = reset($array);

There is one special case to watch out for though (so check the length of the array first):

$arr1 = array(false);
$arr2 = array();
var_dump(reset($arr1) === reset($arr2)); // bool(true)

Ref : https://bit.ly/32ecxHN