Sintaxis
mixed json_decode ( string $json [, bool $assoc = false [, int $depth = 512 [, int $options = 0 ]]] )
Parámetros
json: cadena JSON que queremos decodificar.
assoc: si lo ponemos a TRUE indicaremos que queremos convertir el objeto resultado en un array asociativo.
depth: límite de profundidad de la recursividad. Por defecto está a 512. Si se supera el límite devolverá un error.
options: se trata de una máscara de bits de opciones de la decodificación. Actualmente está disponible únicamente JSON_BIGINT_AS_STRING que convertiría los enteros grandes a cadena, en lugar de a float como lo haría por defecto.
Ejemplo
Veamos con un ejemplo su funcionalidad y lo que devuelve en cada caso. Los nombres y valores de la cadena JSON siempre deben ir entre comillas dobles:
$json = '{"users":[{ "user": "Carlos", "age": 30, "country": "Spain" }, { "user": "John", "age": 25, "country": "United States" }]}'; // Decodificamos la cadena JSON $obj = json_decode($json); var_dump($obj); /* devuelve object(stdClass)#1 (1) { ["users"]=> array(2) { [0]=> object(stdClass)#2 (3) { ["user"]=> string(6) "Carlos" ["age"]=> int(30) ["country"]=> string(5) "Spain" } [1]=> object(stdClass)#3 (3) { ["user"]=> string(4) "John" ["age"]=> int(25) ["country"]=> string(13) "United States" } } } */ // Devolvemos el resultado como array $obj = json_decode($json, true); var_dump($obj); /* devuelve array(1) { ["users"]=> array(2) { [0]=> array(3) { ["user"]=> string(6) "Carlos" ["age"]=> int(30) ["country"]=> string(5) "Spain" } [1]=> array(3) { ["user"]=> string(4) "John" ["age"]=> int(25) ["country"]=> string(13) "United States" } } } */ // Limitamos la profundidad de la recursividad a 2 $obj = json_decode($json, true, 2); var_dump($obj); /* devuelve NULL -> la profundidad es 4 */