simdjson_decode
Décode une chaîne JSON
&reftitle.description;
mixedsimdjson_decode
stringjson
boolassociative&false;
intdepth512
Prend une chaîne encodée en JSON et la convertit en une valeur PHP.
Cela utilise une Instruction Simultanée plus Rapide, Données Multiples (Simultaneous Instruction, Multiple Data - SIMD)
que json_decode lorsqu'elle est prise en charge par l'architecture de l'ordinateur.
&reftitle.parameters;
json
Le string json à décoder.
Cette fonction ne fonctionne qu'avec des chaînes encodées en UTF-8.
Cette fonction analyse les entrées valides que
json_decode peut décoder,
à condition qu'elles soient inférieures à 4 Go de longueur.
associative
Lorsque &true;, les objets JSON seront retournés sous forme
de &array; associatifs ; lorsqu'ils sont &false;, les objets JSON seront retournés sous forme d'&object;s.
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.
&reftitle.returnvalues;
Renvoie la valeur encodée dans json dans le
type PHP approprié. Les valeurs true, false et
null sont renvoyées respectivement comme &true;, &false; et &null;.
&reftitle.errors;
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.
&reftitle.examples;
Exemples de simdjson_decode
]]>
&example.outputs;
int(1)
["b"]=>
int(2)
["c"]=>
int(3)
}
array(3) {
["a"]=>
int(1)
["b"]=>
int(2)
["c"]=>
int(3)
}
]]>
Accéder à des propriétés d'objet non valides
Accéder à des éléments dans un objet qui contiennent des caractères non
autorisés par la convention de nommage de PHP (par exemple, le trait d'union) peut être
accompli en encapsulant le nom de l'élément entre des accolades et des apostrophes.
{'foo-bar'}; // 12345
?>
]]>
Erreurs courantes lors de l'utilisation de simdjson_decode
]]>
Erreurs de depth
array -> array -> string)
$json = json_encode(
[
1 => [
'English' => [
'One',
'January'
],
'French' => [
'Une',
'Janvier'
]
]
]
);
// Afficher les erreurs pour différentes profondeurs.
var_dump(simdjson_decode($json, true, 4));
try {
var_dump(simdjson_decode($json, true, 3));
} catch (SimdJsonException $e) {
echo "Caught: ", $e->getMessage(), "\n";
}
?>
]]>
&example.outputs;
array(2) {
["English"]=>
array(2) {
[0]=>
string(3) "One"
[1]=>
string(7) "January"
}
["French"]=>
array(2) {
[0]=>
string(3) "Une"
[1]=>
string(7) "Janvier"
}
}
}
Caught: The JSON document was too deep (too many nested objects and arrays)
]]>
simdjson_decode de grands entiers
]]>
&example.outputs;
float(1.2345678901235E+19)
}
]]>
&reftitle.notes;
La spécification JSON n'est pas JavaScript, mais un sous-ensemble de JavaScript.
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.
&reftitle.seealso;
json_encode
json_decode