En PHP, trabajar con JSON es muy sencillo porque el lenguaje trae funciones nativas para convertir entre arrays/objetos de PHP y strings JSON:
Ejemplo básico
<?php
$usuario = [
"nombre" => "Ana",
"edad" => 28,
"activo" => true
];
$json = json_encode($usuario);
echo $json;
// {"nombre":"Ana","edad":28,"activo":true}
🔎 Observaciones:
<?php
class Producto {
public $codigo;
public $descripcion;
public $precio;
public $disponible;
public function __construct($codigo, $descripcion, $precio, $disponible) {
$this->codigo = $codigo;
$this->descripcion = $descripcion;
$this->precio = $precio;
$this->disponible = $disponible;
}
}
$prod = new Producto(101, "Teclado mecánico", 1200.50, true);
echo json_encode($prod);
// {"codigo":101,"descripcion":"Teclado mecánico","precio":1200.5,"disponible":true}
PHP permite controlar la salida JSON con constantes:
<?php
$datos = ["producto" => "Mouse", "precio" => 850.75];
echo json_encode($datos, JSON_PRETTY_PRINT);
// {
// "producto": "Mouse",
// "precio": 850.75
// }
echo json_encode($datos, JSON_UNESCAPED_UNICODE);
// {"producto":"Mouse","precio":850.75} (sin escape de tildes/emojis)
Opciones comunes:
JSON_PRETTY_PRINT
— salida con sangría.JSON_UNESCAPED_UNICODE
— no escapa caracteres Unicode (tildes, emojis).JSON_UNESCAPED_SLASHES
— no escapa /
.Ejemplo básico
<?php
$json = '{"nombre":"Luis","edad":35,"activo":false}';
// Convertir a objeto (por defecto)
$obj = json_decode($json);
echo $obj->nombre; // Luis
echo $obj->edad; // 35
Si pasamos true
como segundo parámetro de json_decode
, obtenemos un array asociativo en vez de un objeto.
<?php
$json = '{"nombre":"María","edad":29,"activo":true}';
$array = json_decode($json, true);
echo $array["nombre"]; // María
echo $array["edad"]; // 29
Supongamos que tenemos un archivo usuario.json
con:
{
"nombre": "Carlos",
"edad": 40,
"activo": true
}
Código PHP
<?php
$json = file_get_contents("usuario.json");
$datos = json_decode($json, true);
echo $datos["nombre"]; // Carlos
Referencia: file_get_contents.
<?php
$producto = [
"codigo" => 102,
"descripcion" => "Monitor 24 pulgadas",
"precio" => 1500.00,
"disponible" => true
];
file_put_contents("producto.json", json_encode($producto, JSON_PRETTY_PRINT));
Esto genera un archivo producto.json
:
{
"codigo": 102,
"descripcion": "Monitor 24 pulgadas",
"precio": 1500,
"disponible": true
}
Referencia: file_put_contents.
Si el JSON está mal formado, json_decode
retorna null
. Se puede usar json_last_error()
y json_last_error_msg()
para diagnosticar.
<?php
$json = "{nombre:'Ana'}"; // inválido (faltan comillas dobles)
$datos = json_decode($json);
if (json_last_error() !== JSON_ERROR_NONE) {
echo "Error al parsear JSON: " . json_last_error_msg();
}
json_encode()
— array/objeto PHP → string JSON.json_decode()
— string JSON → objeto PHP (por defecto) o array asociativo (true
).JSON_PRETTY_PRINT
, JSON_UNESCAPED_UNICODE
, etc.).file_get_contents
/ file_put_contents
).json_last_error()
para detectar errores.