PHP JSON
ADVERTISEMENTS
This JSON extension is used to the data-interchange format of json to string & string to json.
Example to encode a string into JSON
<?php
$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
echo json_encode($arr);
?>
Output
{"a":1,"b":2,"c":3,"d":4,"e":5}
Example to decode JSON into a string
<?php
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json));
var_dump(json_decode($json, true));
?>
Output
object(stdClass)#1 (5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
array(5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
Requirements
There is no installation needed to use these functions; they are part of the PHP core.
Installation
As of PHP 5.2.0, the JSON extension is bundled and compiled into PHP by default.
Runtime Configuration
This extension has no configuration directives defined in php.ini.
Resource Types
This extension has no resource types defined.
Predefined Constants
This json extension provided the in-built predefined constants.
- JSON_ERROR_NONE - (integer)
- No error has occurred. Available since PHP 5.3.0.
- JSON_ERROR_DEPTH - (integer)
- The maximum stack depth has been exceeded. Available since PHP 5.3.0.
- JSON_ERROR_STATE_MISMATCH - (integer)
- Occurs with underflow or with the modes mismatch. Available since PHP 5.3.0.
- JSON_ERROR_CTRL_CHAR - (integer)
- Control character error, possibly incorrectly encoded. Available since PHP 5.3.0.
- JSON_ERROR_SYNTAX - (integer)
- Syntax error. Available since PHP 5.3.0.
- JSON_ERROR_UTF8 - (integer)
- Malformed UTF-8 characters, possibly incorrectly encoded. Available since PHP 5.3.3.
- JSON_ERROR_RECURSION - (integer)
- The object or array passed to json_encode() includes recursive references and cannot be encoded.
- If the JSON_PARTIAL_OUTPUT_ON_ERROR option was given,
- NULL will be encoded in the place of the recursive reference. Available since PHP 5.5.0.
- JSON_ERROR_INF_OR_NAN - (integer)
- The value passed to json_encode() includes either NAN or INF. If the JSON_PARTIAL_OUTPUT_ON_ERROR option was given,
- 0 will be encoded in the place of these special numbers. Available since PHP 5.5.0.
- JSON_ERROR_UNSUPPORTED_TYPE - (integer)
- A value of an unsupported type was given to json_encode(), such as a resource.
- If the JSON_PARTIAL_OUTPUT_ON_ERROR option was given,
- NULL will be encoded in the place of the unsupported value. Available since PHP 5.5.0.
- JSON_ERROR_INVALID_PROPERTY_NAME - (integer)
- A key starting with \u0000 character was in the string passed to json_decode() when decoding a JSON object into a PHP object.
- Available since PHP 7.0.0.
- JSON_ERROR_UTF16 - (integer)
- Single unpaired UTF-16 surrogate in unicode escape contained in the JSON string passed to json_encode().
- Available since PHP 7.0.0.
- The following constants can be combined to form options for json_decode().
- JSON_BIGINT_AS_STRING - (integer)
- Decodes large integers as their original string value. Available since PHP 5.4.0.
- JSON_OBJECT_AS_ARRAY - (integer)
- Decodes JSON objects as PHP array.
- This option can be added automatically by calling json_decode() with the second parameter equal to TRUE.
- Available since PHP 5.4.0.
- The following constants can be combined to form options for json_encode().
- JSON_HEX_TAG - (integer)
- All < and > are converted to \u003C and \u003E. Available since PHP 5.3.0.
- JSON_HEX_AMP - (integer)
- All &s are converted to \u0026. Available since PHP 5.3.0.
- JSON_HEX_APOS - (integer)
- All ' are converted to \u0027. Available since PHP 5.3.0.
- JSON_HEX_QUOT - (integer)
- All " are converted to \u0022. Available since PHP 5.3.0.
- JSON_FORCE_OBJECT - (integer)
- Outputs an object rather than an array when a non-associative array is used.
- Especially useful when the recipient of the output is expecting an object and the array is empty.
- Available since PHP 5.3.0.
- JSON_NUMERIC_CHECK - (integer)
- Encodes numeric strings as numbers. Available since PHP 5.3.3.
- JSON_PRETTY_PRINT - (integer)
- Use whitespace in returned data to format it. Available since PHP 5.4.0.
- JSON_UNESCAPED_SLASHES - (integer)
- Don't escape /. Available since PHP 5.4.0.
- JSON_UNESCAPED_UNICODE - (integer)
- Encode multibyte Unicode characters literally (default is to escape as \uXXXX).
- Available since PHP 5.4.0.
- JSON_PARTIAL_OUTPUT_ON_ERROR - (integer)
- Substitute some unencodable values instead of failing.
- Available since PHP 5.5.0.
- JSON_PRESERVE_ZERO_FRACTION - (integer)
- Ensures that float values are always encoded as a float value.
- Available since PHP 5.6.6.
- JSON_UNESCAPED_LINE_TERMINATORS - (integer)
- The line terminators are kept unescaped when JSON_UNESCAPED_UNICODE is supplied.
- It uses the same behavior as it was before PHP 7.1 without this constant.
- Available since PHP 7.1.0.
JSON Functions
- json_decode — Decodes a JSON string
- json_encode — Returns the JSON representation of a value
- json_last_error_msg — Returns the error string of the last json_encode() or json_decode() call
- json_last_error — Returns the last error occurred
JSON predefined interfaces
- JsonSerializable