International PHP Conference 2015

Constantes pré-definidas

As contantes abaixo são definidas por esta extensão e somente estarão disponíveis quando a extensão foi compilada com o PHP ou carregada dinamicamente durante a execução.

As seguintes constantes indicam o tipo de erro retornado pela função json_last_error().

JSON_ERROR_NONE (integer)
Sem erros. Disponível desde o PHP 5.3.0.
JSON_ERROR_DEPTH (integer)
O limite de pilha de chamadas foi ultrapassado Disponível desde o PHP 5.3.0.
JSON_ERROR_STATE_MISMATCH (integer)
Ocorre em underflows ou com incongruência de modos. Disponível desde o PHP 5.3.0.
JSON_ERROR_CTRL_CHAR (integer)
Erro de controle de caracteres, possivelmente erro de enconding. Disponível desde o PHP 5.3.0.
JSON_ERROR_SYNTAX (integer)
Erro de sintaxe. Disponível desde o PHP 5.3.0.
JSON_ERROR_UTF8 (integer)
Caracteres UTF-8 mal formados, possivelmente erro de enconding. Esta constante está disponível desde o PHP 5.3.3.
JSON_ERROR_RECURSION (integer)

O objeto ou array passado para json_encode() inclui referências recursivas, e não pode ser formatada. Se a opção JSON_PARTIAL_OUTPUT_ON_ERROR foi informada, NULL será substituido no lugar da referência recursiva.

Esta constante está disponível desde o PHP 5.5.0.

JSON_ERROR_INF_OR_NAN (integer)

Um valor passado para json_encode() inclui NAN ou INF. Se a opção JSON_PARTIAL_OUTPUT_ON_ERROR foi informada, 0 será substituído no lugar do número especial.

Esta constante está disponível desde o PHP 5.5.0.

JSON_ERROR_UNSUPPORTED_TYPE (integer)

Um valor de um tipo não suportado foi informado para json_encode(), por exemplo um resource. Se a opção JSON_PARTIAL_OUTPUT_ON_ERROR foi informada, NULL será substitui ao invés do valor não suportado.

Esta constante está disponível desde o PHP 5.5.0.

As seguintes constantes podem ser combinadas para formar opções para a função json_encode().

JSON_HEX_TAG (integer)
Todos os caracteres < e > serão convertidos para \u003C and \u003E. Disponível desde o PHP 5.3.0.
JSON_HEX_AMP (integer)
Todos os caracteres & serão convertidos para \u0026. Disponível desde o PHP 5.3.0.
JSON_HEX_APOS (integer)
Todos os caracteres ' serão convertidos para \u0027. Disponível desde o PHP 5.3.0.
JSON_HEX_QUOT (integer)
Todos os caracteres " serão convertidos para \u0022. Disponível desde o PHP 5.3.0.
JSON_FORCE_OBJECT (integer)
Imprime um objeto em vez de um array quando um array não recursivo é usado. Muito útil quando o chamador espera um objeto mas o array está vazio. Disponível desde o PHP 5.3.0.
JSON_NUMERIC_CHECK (integer)
Codifica strings numéricas como números. Disponível desdee o PHP 5.3.3.
JSON_BIGINT_AS_STRING (integer)
Codifica números grandes como seu valor string original. Disponível desde o PHP 5.4.0.
JSON_PRETTY_PRINT (integer)
Formata os dados retornados com espaços em branco. Disponível desde PHP 5.4.0.
JSON_UNESCAPED_SLASHES (integer)
Não escapa o caracter /. Disponível desde o PHP 5.4.0.
JSON_UNESCAPED_UNICODE (integer)
Codifica caracteres Unicode multibyte literalmente (default é formatar como \uXXXX). Disponível desde o PHP 5.4.0.
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