simdjson_is_valid

(PECL simdjson >= 2.0.0)

simdjson_is_validVerifica se uma string JSON é válida

Descrição

simdjson_is_valid(string $json, int $depth = 512): bool

Recebe uma string codificada em JSON e retorna true se for válida.

Parâmetros

json

A string json sendo validada.

Esta função só funciona com strings codificadas em UTF-8.

Esta função valida entradas que json_decode() pode decodificar, desde que tenham menos de 4 GiB de comprimento.

depth

Profundidade máxima de aninhamento da estrutura que está sendo validada. O valor deve ser maior que 0, e menor ou igual a 2147483647. Os chamadores devem usar valores razoavelmente pequenos, porque profundidades maiores exigem mais espaço de buffer e aumentarão a profundidade de recursão, ao contrário da implementação atual de json_decode().

Valor Retornado

Retorna true se json for uma string JSON válida, false caso contrário.

Erros/Exceções

Se json for maior que 4 GiB, uma SimdJsonException será lançada a partir do PECL simdjson 2.1.0, enquanto anteriormente, uma RuntimeException era lançada.

Se depth estiver fora do intervalo permitido, um SimdJsonValueError será gerado a partir do PECL simdjson 3.0.0, enquanto anteriormente, um erro de nível E_WARNING era gerado.

Exemplos

Exemplo #1 Exemplos de simdjson_decode()

<?php
$json
= '{"a":1,"b":2,"c":3}';
$invalidJson = '{"a":1,"b":2,"c":';

var_dump(simdjson_is_valid($json));
var_dump(simdjson_is_valid($invalidJson));

?>

O exemplo acima produzirá:

bool(true)
bool(false)

Exemplo #2 Erros de depth

<?php
// Codificando alguns dados com uma profundidade máxima de 4
// (array -> array -> array -> string)
$json = json_encode(
[
1 => [
'English' => [
'One',
'January'
],
'French' => [
'Une',
'Janvier'
]
]
]
);

// Mostra os erros para diferentes profundidades.
var_dump(simdjson_is_valid($json, 4));
var_dump(simdjson_is_valid($json, 3));
?>

O exemplo acima produzirá:

bool(true)
bool(false)

Notas

Nota:

A especificação JSON não é JavaScript, mas um subconjunto de JavaScript.

Nota:

Em caso de falha na decodificação, uma SimdJsonException é lançada e SimdJsonException::getCode() e SimdJsonException::getMessage() podem ser usados para determinar a natureza exata do erro.

Veja Também

adicione uma nota

Notas Enviadas por Usuários (em inglês)

Não há notas de usuários para esta página.
To Top