simdjson_decode
En esta página
simdjson_decode
Decodifica una cadena JSON
Descripción#
simdjson_decode(string $json, [bool $associative], [int $depth]): mixed
```php
Toma una cadena codificada en JSON y la convierte en un valor PHP. Esto utiliza una Instrucción Simultánea más Rápida, Datos Múltiples (Simultaneous Instruction, Multiple Data - SIMD) que `json_decode` cuando es soportada por la arquitectura del ordenador.
## Parámetros
`json`
El `string` `json` a decodificar.
Esta función solo funciona con cadenas codificadas en UTF-8.
Esta función analiza las entradas válidas que `json_decode` puede decodificar, siempre que sean inferiores a 4 GB de longitud.
`associative`
Cuando `true`, los objetos JSON serán devueltos como `array` asociativos; cuando sean `false`, los objetos JSON serán devueltos como `object`s.
`depth`
La profundidad máxima de la estructura a decodificar. El valor debe ser superior a `0`, e inferior o igual a `2147483647`. Aquellos que 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`.
## Valores devueltos
Devuelve el valor codificado en `json` en el tipo PHP apropiado. Los valores `true`, `false` y `null` son devueltos respectivamente como `true`, `false` y `null`.
## Errores/Excepciones
Si `json` es inválido, una `SimdJsonException` es lanzada a partir de PECL simdjson 2.1.0, mientras que anteriormente, una `RuntimeException` era lanzada.
Si `depth` está fuera del rango permitido, una `SimdJsonValueError` es lanzada a partir de PECL simdjson 3.0.0, mientras que anteriormente, un error de nivel `E_WARNING` era lanzado.
## Ejemplos
Ejemplos de `simdjson_decode`
El ejemplo anterior mostrará:
object(stdClass)#1 (3) {
["a"]=>
int(1)
["b"]=>
int(2)
["c"]=>
int(3)
}
array(3) {
["a"]=>
int(1)
["b"]=>
int(2)
["c"]=>
int(3)
}
Acceder a propiedades de objeto no válidas
Acceder a elementos en un objeto que contienen caracteres no permitidos por la convención de nomenclatura de PHP (por ejemplo, el guion) puede ser logrado encapsulando el nombre del elemento entre llaves y comillas.
Errores comunes al usar `simdjson_decode`
Errores de `depth`
El ejemplo anterior mostrará:
array(1) {
[1]=>
array(2) {
["English"]=>
array(2) {
[0]=>
string(3) "One"
[1]=>
string(7) "January"
}
["French"]=>
array(2) {
[0]=>
string(3) "Une"
[1]=>
string(7) "Janvier"
}
}
}
Capturado: El documento JSON era demasiado profundo (demasiados objetos y arrays anidados)
`simdjson_decode` de grandes enteros
```php
El ejemplo anterior mostrará:
object(stdClass)#1 (1) {
["number"]=>
float(1.2345678901235E+19)
}
Notas#
[!NOTE] La especificación JSON no es JavaScript, sino un subconjunto de JavaScript.
[!NOTE] En el caso de que la decodificación falle, una
SimdJsonExceptiones lanzada y SimdJsonException::getCode y SimdJsonException::getMessage pueden ser utilizados para determinar la naturaleza exacta del error.
Véase también#
json_encode
json_decode