php-como-trabajar-con-json-en-php

Cómo trabajar con JSON en PHP

  • 2 min

JSON es un formato de texto para representar e intercambiar datos estructurados entre aplicaciones.

JSON (JavaScript Object Notation) es un formato de texto ligero para el intercambio de datos. Aunque viene de JavaScript, PHP lo maneja de forma nativa y extremadamente eficiente. Es fundamental para crear APIs y comunicar tu backend (PHP) con el frontend (React, Vue, JS puro).

json_encode: de PHP a texto (JSON)

Esta función toma un array o un objeto de PHP y lo convierte en una cadena de texto (string) con formato JSON. Es lo que haces cuando quieres “enviar” datos al exterior.

Sintaxis: string json_encode ( mixed $value [, int $flags ] )

Ejemplo:

$usuario = [
    "nombre" => "Carlos",
    "edad" => 30,
    "activo" => true,
    "habilidades" => ["PHP", "SQL", "Git"]
];

// Convertimos el array PHP a JSON
// JSON_UNESCAPED_UNICODE permite que las tildes y ñ se vean bien
// JSON_PRETTY_PRINT hace que el JSON sea legible para humanos (con saltos de línea)
$jsonTexto = json_encode($usuario, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);

echo $jsonTexto;
Copied!

Salida generada (String):

{
    "nombre": "Carlos",
    "edad": 30,
    "activo": true,
    "habilidades": [
        "PHP",
        "SQL",
        "Git"
    ]
}
Copied!

json_decode: de texto (JSON) a PHP

Esta función hace lo contrario: recibe un string JSON (quizás recibido de una API externa o leído de un archivo) y lo convierte en una estructura de datos de PHP.

El “Truco” del segundo parámetro: Esta es la fuente de confusión número 1 en PHP.

  • Si usas json_decode($json), PHP crea un Objeto (stdClass).
  • Si usas json_decode($json, true), PHP crea un Array Asociativo.
ModoCódigoAcceso al dato
Objeto (Por defecto)$datos = json_decode($json);$datos->nombre
Array (Recomendado)$datos = json_decode($json, true);$datos['nombre']

Ejemplo:

$jsonRecibido = '{"producto": "Monitor", "precio": 200}';

// Modo Objeto
$obj = json_decode($jsonRecibido);
echo $obj->producto; // Salida: Monitor

// Modo Array (Más común si trabajas con arrays en el resto de tu código)
$arr = json_decode($jsonRecibido, true);
echo $arr['producto']; // Salida: Monitor
Copied!

Manejo de errores en JSON

A veces el JSON que recibes está mal formado (falta una coma, una comilla, etc.). Si json_decode falla, devuelve null, lo cual puede ser peligroso si no lo verificas.

Desde PHP 7.3+, la mejor forma de manejar esto es combinándolo con lo que aprendimos al principio del módulo: Excepciones. Usamos la bandera JSON_THROW_ON_ERROR.

$jsonCorrupto = '{"nombre": "Juan" ... error de sintaxis ... }';

try {
    // Esto lanzará una excepción automática si el JSON está mal
    $datos = json_decode($jsonCorrupto, true, 512, JSON_THROW_ON_ERROR);
    
} catch (JsonException $e) {
    echo "¡Error procesando JSON!: " . $e->getMessage();
}
Copied!