Predefined Constants

The constants below are defined by this extension, and will only be available when the extension has either been compiled into PHP or dynamically loaded at runtime.

The following constants indicate the type of error returned by json_last_error(). They are all available as of PHP 5.3.0.

JSON_ERROR_NONE (integer)
No error has occurred.
JSON_ERROR_DEPTH (integer)
The maximum stack depth has been exceeded.
JSON_ERROR_STATE_MISMATCH (integer)
Occurs with underflow or with the modes mismatch.
JSON_ERROR_CTRL_CHAR (integer)
Control character error, possibly incorrectly encoded.
JSON_ERROR_SYNTAX (integer)
Syntax error.
JSON_ERROR_UTF8 (integer)
Malformed UTF-8 characters, possibly incorrectly encoded. This constant is available as of PHP 5.3.1.

The following constants can be combined to form options for json_encode(). They are all available as of PHP 5.3.0.

JSON_HEX_TAG (integer)
All < and > are converted to \u003C and \u003E.
JSON_HEX_AMP (integer)
All &s are converted to \u0026.
JSON_HEX_APOS (integer)
All ' are converted to \u0027.
JSON_HEX_QUOT (integer)
All " are converted to \u0022.
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.
JSON_NUMERIC_CHECK (integer)
Encodes numeric strings as numbers. Available since PHP 5.3.3.
add a note add a note

User Contributed Notes 4 notes

up
28
Yzmir Ramirez
11 months ago
If you curious of the numeric values of the constants, as of JSON 1.2.1, the constants have the following values (not that you should use the numbers directly):

JSON_HEX_TAG => 1
JSON_HEX_AMP => 2
JSON_HEX_APOS => 4
JSON_HEX_QUOT => 8
JSON_FORCE_OBJECT => 16
JSON_NUMERIC_CHECK => 32
JSON_UNESCAPED_SLASHES => 64
JSON_PRETTY_PRINT => 128
JSON_UNESCAPED_UNICODE => 256

JSON_ERROR_DEPTH => 1
JSON_ERROR_STATE_MISMATCH => 2
JSON_ERROR_CTRL_CHAR => 3

JSON_ERROR_SYNTAX => 4

JSON_ERROR_UTF8 => 5
JSON_OBJECT_AS_ARRAY => 1

JSON_BIGINT_AS_STRING => 2
up
4
on5wis at mac dot com
4 months ago
since json_encode expects a UTF-8 string there is no need to encode the € symbol.

I suggest you try to echo : json_encode('€');
It gives: "\u20ac"
I'm running PHP 5.6.5 on the CLI, on MacOS X 10.10
up
-8
Anonymous
2 months ago
I am working with "Marathi Language Data" and I found that when I encoded Marathi data to json using json_encode it returned me unicode values of each character like below:

Program :

<?php
$ar
= array("word" => "धाडस");
echo
json_encode($ar);
?>

Output of program is :

{"word":"\u0927\u093e\u0921\u0938"}

This is not expected output because what I need is output as

{"word":"धाडस"}

So I used following code:

<?php
$ar
= array("word" => "धाडस");
echo
json_encode($ar, JSON_UNESCAPED_UNICODE);
?>

And I got the required output as :

{"word":"धाडस"}
up
-15
jgarviahonrado at yahoo dot es
4 months ago
When decoding the euro symbol (€) as below:

json_encode(utf8_encode('€')

json_encode provides the UTF-8 code \u0080, but it would be really interesting to get the \u20AC one.

Maybe a new option could be added to get the current code or the \u20AC one.
To Top