Trabajo con JSON en PHP: análisis y serialización para principiantes

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción al trabajo con JSON en PHP

\n\n

JSON (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\n

En 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\n

Al 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
\n\n

Funciones principales para trabajar con JSON en PHP

\n\n

PHP proporciona dos funciones principales para trabajar con JSON:

\n\n

json_encode() — serialización de datos

\n\n

La función json_encode() convierte una variable de PHP (array, objeto, cadena, número) en una cadena JSON. Esto se llama serialización.

\n\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\n

La 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
\n\n

json_decode() — análisis de JSON

\n\n

La función json_decode() realiza la operación inversa: convierte una cadena JSON en una variable de PHP. Esto se llama análisis.

\n\n

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\n

Tenga en cuenta el segundo parámetro de la función json_decode():

\n
    \n
  • false (por defecto) — devuelve objetos stdClass
  • \n
  • true — devuelve arrays asociativos
  • \n
\n\n

Funcionalidades avanzadas y manejo de errores

\n\n

Trabajo con estructuras anidadas

\n\n

JSON 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\n

El resultado se formateará para facilitar la lectura gracias a la bandera JSON_PRETTY_PRINT.

\n\n

Manejo de errores al analizar

\n\n

Al trabajar con datos externos (API, archivos), es importante verificar que el JSON sea correcto. Utilice la función json_last_error():

\n\n
<?php\n$badJson = '{"name":                

Blogs

Book Recommendations