Constantes pré-definidas

As contantes abaixo são definidas por esta extensão e só estarão disponíveis quando a extensão tiver sido compilada no PHP ou tiver sido carregada dinamicamente em tempo de execução.

As seguintes constantes indicam o tipo de erro retornado pela função json_last_error() or armazenadas no code de uma JsonException

JSON_ERROR_NONE (int)
Sem erros.
JSON_ERROR_DEPTH (int)
O limite de pilha de chamadas foi ultrapassado
JSON_ERROR_STATE_MISMATCH (int)
Ocorre em underflows ou com incongruência de modos.
JSON_ERROR_CTRL_CHAR (int)
Erro em caracter de controle, possivelmente erro de enconding.
JSON_ERROR_SYNTAX (int)
Erro de sintaxe.
JSON_ERROR_UTF8 (int)
Caracteres UTF-8 mal formados, possivelmente erro de enconding.
JSON_ERROR_RECURSION (int)
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á substituído no lugar da referência recursiva.
JSON_ERROR_INF_OR_NAN (int)
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.
JSON_ERROR_UNSUPPORTED_TYPE (int)
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á substituída ao invés do valor não suportado.
JSON_ERROR_INVALID_PROPERTY_NAME (int)
Uma chave começando com caracter \u0000 estava na chave string foi passada para json_decode() quando decodificando um objeto JSON para um objeto PHP.
JSON_ERROR_UTF16 (int)
Um surrogate UTF-16 despareado em um unicode escape estava presente em uma string JSON processada por json_decode().

As constantes a seguir podem ser combinadas para formar opções na função json_decode().

JSON_BIGINT_AS_STRING (int)
Decodifica inteiros grandes como suas strings originais.
JSON_OBJECT_AS_ARRAY (int)
Decodifica objetos JSON como arrays PHP. Esta opção pode ser adicionada automaticamente quando chamando json_decode() com o segundo parâmetro igual a true.

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

JSON_HEX_TAG (int)
Todos os caracteres < e > serão convertidos para \u003C and \u003E.
JSON_HEX_AMP (int)
Todos os caracteres & serão convertidos para \u0026.
JSON_HEX_APOS (int)
Todos os caracteres ' serão convertidos para \u0027.
JSON_HEX_QUOT (int)
Todos os caracteres " serão convertidos para \u0022.
JSON_FORCE_OBJECT (int)
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.
JSON_NUMERIC_CHECK (int)
Codifica strings numéricas como números.
JSON_PRETTY_PRINT (int)
Formata os dados retornados com espaços em branco.
JSON_UNESCAPED_SLASHES (int)
Não escapa o caracter /.
JSON_UNESCAPED_UNICODE (int)
Codifica caracteres Unicode multibyte literalmente (default é formatar como \uXXXX).
JSON_PARTIAL_OUTPUT_ON_ERROR (int)
Substitui valores não identificados ao invés de falhar.
JSON_PRESERVE_ZERO_FRACTION (int)
Garante que float sempre são codificados como um número float.
JSON_UNESCAPED_LINE_TERMINATORS (int)
Os fins de linha são preservados não escapados quando JSON_UNESCAPED_UNICODE é informado. Este é o mesmo comportamento existente anteriormente ao PHP 7.1 sem essa constante. Disponível desde o PHP 7.1.0.

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

JSON_INVALID_UTF8_IGNORE (int)
Ignora caracteres inválidos UTF-8. Disponível desde o 7.2.0.
JSON_INVALID_UTF8_SUBSTITUTE (int)
Converte caracteres inválidos UTF-8 para \0xfffd (Caracter Unicode 'REPLACEMENT CHARACTER') Disponível desde o 7.2.0.
JSON_THROW_ON_ERROR (int)
Lança um JsonException se ocorrer um erro ao invés de carregar o erro global que pode ser obtido com json_last_error() e json_last_error_msg(). JSON_PARTIAL_OUTPUT_ON_ERROR tem precedência sobre JSON_THROW_ON_ERROR. Disponível desde o PHP 7.3.0.
JSON_ERROR_NON_BACKED_ENUM (int)
O valor passado para json_encode() inclui uma enumeração não apoiada que não pode ser serializada. Disponível a partir do PHP 8.1.0.