Introducción al trabajo con JSON en PHP
\n\nJSON (JavaScript Object Notation) es un formato ligero de intercambio de datos que se utiliza ampliamente en el desarrollo web para transferir información entre el cliente y el servidor. A pesar de su origen en JavaScript, JSON se ha convertido en un estándar universal, compatible con prácticamente todos los lenguajes de programación, incluido PHP.
\n\nEn PHP, el trabajo con JSON está implementado de forma nativa, lo que hace que el procesamiento de este formato sea simple y eficiente. En este artículo, analizaremos en detalle cómo realizar el análisis de JSON (conversión de una cadena en estructuras de datos de PHP) y la serialización (conversión de datos de PHP en una cadena JSON). El material está orientado a desarrolladores principiantes, por lo que avanzaremos de lo simple a lo complejo.
\n\nAl final del artículo, aprenderá a:
\n- \n
- Convertir arrays y objetos de PHP a JSON \n
- Analizar cadenas JSON en arrays asociativos y objetos \n
- Manejar errores al trabajar con JSON \n
- Utilizar estructuras de datos anidadas \n
Funciones principales para trabajar con JSON en PHP
\n\nPHP proporciona dos funciones principales para trabajar con JSON:
\n\njson_encode() — serialización de datos
\n\nLa función json_encode() convierte una variable de PHP (array, objeto, cadena, número) en una cadena JSON. Esto se llama serialización.
Ejemplo de uso básico:
\n\n<?php\n// Array asociativo\n$user = [\n "name" => "Iván",\n "age" => 28,\n "email" => "ivan@example.com",\n "is_active" => true\n];\n\n$json = json_encode($user);\necho $json;\n// Salida: {"name":"Iván","age":28,"email":"ivan@example.com","is_active":true}\n?>\n\nLa función convierte automáticamente los tipos de datos de PHP en los tipos JSON correspondientes:
\n- \n
- Cadenas → cadenas JSON \n
- Números → números JSON \n
- Valores booleanos → true/false \n
- Arrays → objetos o arrays JSON (depende de las claves) \n
- NULL → null \n
json_decode() — análisis de JSON
\n\nLa función json_decode() realiza la operación inversa: convierte una cadena JSON en una variable de PHP. Esto se llama análisis.
Ejemplo:
\n\n<?php\n$jsonString = '{"name":"Iván","age":28,"email":"ivan@example.com","is_active":true}';\n\n// Análisis en objeto (por defecto)\n$userObject = json_decode($jsonString);\necho $userObject->name; // Salida: Iván\n\n// Análisis en array asociativo (segundo parámetro true)\n$userArray = json_decode($jsonString, true);\necho $userArray["name"]; // Salida: Iván\n?>\n\nTenga en cuenta el segundo parámetro de la función json_decode():
- \n
false(por defecto) — devuelve objetos stdClass \n true— devuelve arrays asociativos \n
Funcionalidades avanzadas y manejo de errores
\n\nTrabajo con estructuras anidadas
\n\nJSON admite objetos y arrays anidados. PHP maneja fácilmente estas estructuras:
\n\n<?php\n// Estructura de datos compleja\n$data = [\n "company" => "TechCorp",\n "employees" => [\n ["name" => "Ana", "position" => "Developer"],\n ["name" => "Pedro", "position" => "Designer"],\n ["name" => "María", "position" => "Manager"]\n ],\n "address" => [\n "city" => "Moscú",\n "street" => "Tverskaya",\n "building" => 10\n ]\n];\n\n$json = json_encode($data, JSON_PRETTY_PRINT);\necho $json;\n?>\n\nEl resultado se formateará para facilitar la lectura gracias a la bandera JSON_PRETTY_PRINT.
Manejo de errores al analizar
\n\nAl trabajar con datos externos (API, archivos), es importante verificar que el JSON sea correcto. Utilice la función json_last_error():
<?php\n$badJson = '{"name":