(PECL simdjson >= 2.0.0)
simdjson_is_valid — Vérifie si une chaîne JSON est valide
Prend une chaîne encodée en JSON et retourne true si elle est valide.
json
Le string json
à valider.
Cette fonction ne fonctionne qu'avec des chaînes encodées en UTF-8.
Cette fonction valide les entrées que json_decode() peut décoder, à condition qu'elles soient inférieures à 4 Go de longueur.
depth
La profondeur maximale de la structure à décoder.
La valeur doit être supérieure à 0
,
et inférieure ou égale à 2147483647
.
Ceux qui appellent cette fonction devraient utiliser des valeurs raisonnablement petites,
car des profondeurs plus importantes nécessitent plus d'espace tampon et augmenteront
la profondeur de récursion, contrairement à l'implémentation actuelle de json_decode().
Si json
est invalide, une SimdJsonException est lancée à partir de PECL simdjson 2.1.0,
alors qu'auparavant, une RuntimeException était lancée.
Si depth
est en dehors de la plage autorisée,
une SimdJsonValueError est lancée à partir de PECL simdjson 3.0.0,
alors qu'auparavant, une erreur de niveau E_WARNING
était lancée.
Exemple #1 Exemples 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));
?>
L'exemple ci-dessus va afficher :
bool(true) bool(false)
Exemple #2 Erreurs de depth
<?php
// Encoder des données avec une profondeur maximale de 4
// (array -> array -> array -> string)
$json = json_encode(
[
1 => [
'English' => [
'One',
'January'
],
'French' => [
'Une',
'Janvier'
]
]
]
);
// Afficher les erreurs pour différentes profondeurs.
var_dump(simdjson_is_valid($json, 4));
var_dump(simdjson_is_valid($json, 3));
?>
L'exemple ci-dessus va afficher :
bool(true) bool(false)
Note:
La spécification JSON n'est pas JavaScript, mais un sous-ensemble de JavaScript.
Note:
Dans le cas où le décodage échoue, une SimdJsonException est lancée et SimdJsonException::getCode() et SimdJsonException::getMessage() peuvent être utilisés pour déterminer la nature exacte de l'erreur.