(PECL simdjson >= 2.0.0)
simdjson_is_valid — Verifica si un string JSON es válido
Toma un string codificado en JSON y devuelve true si es válido.
json
El string json
a validar.
Esta función solo funciona con strings codificados en UTF-8.
Esta función valida las entradas que json_decode() puede decodificar, siempre que sean inferiores a 4 Go de longitud.
depth
La profundidad máxima de la estructura a decodificar.
El valor debe ser superior a 0
,
e inferior o igual a 2147483647
.
Quienes llamen a esta función deberían utilizar valores razonablemente pequeños,
ya que profundidades mayores requieren más espacio de búfer y aumentarán
la profundidad de recursión, a diferencia de la implementación actual de json_decode().
Si json
es inválido, se lanza una SimdJsonException a partir de PECL simdjson 2.1.0,
mientras que anteriormente se lanzaba una RuntimeException.
Si depth
está fuera del rango permitido,
se lanza una SimdJsonValueError a partir de PECL simdjson 3.0.0,
mientras que anteriormente se lanzaba un error de nivel E_WARNING
.
Ejemplo #1 Ejemplos 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));
?>
El resultado del ejemplo sería:
bool(true) bool(false)
Ejemplo #2 Errores de depth
<?php
// Codificar datos con una profundidad máxima de 4
// (array -> array -> array -> string)
$json = json_encode(
[
1 => [
'English' => [
'One',
'January'
],
'French' => [
'Une',
'Janvier'
]
]
]
);
// Mostrar errores para diferentes profundidades.
var_dump(simdjson_is_valid($json, 4));
var_dump(simdjson_is_valid($json, 3));
?>
El resultado del ejemplo sería:
bool(true) bool(false)
Nota:
La especificación JSON no es JavaScript, sino un subconjunto de JavaScript.
Nota:
En caso de que la decodificación falle, se lanza una SimdJsonException y SimdJsonException::getCode() y SimdJsonException::getMessage() pueden ser utilizados para determinar la naturaleza exacta del error.