araç köşesi

Convertir JSON a un array de PHP — y al revés

Convierta JSON en código de array de PHP, o un array de PHP en JSON, con las reglas de comillas, escapes y claves de PHP

Sus datos se quedan con usted. La conversión ocurre dentro del navegador; no se envía nada a ningún servidor.

Cómo funciona

Para dejar una respuesta de API o un archivo de configuración como array fijo dentro del código PHP, normalmente hay que reescribir el JSON a mano: las llaves pasan a corchetes, cada dos puntos se vuelve "=>" y cada texto debe seguir las reglas de comillas de PHP. Pegue el JSON en el panel izquierdo; en el derecho aparece código que empieza con "<?php" y que puede guardarse y cargarse con include sin cambios. En el ejemplo, el objeto "direccion" se convierte en un array asociativo anidado y la lista "etiquetas" en un array sin claves; las comillas simples de "'hechas a mano'" se escapan, y la nota que contiene un salto de línea se escribe entre comillas dobles para que "\n" signifique ese salto. Si deja vacío el nombre de la variable, el código queda como return [...]; que es la forma que esperan los archivos de configuración de Laravel y Symfony. En la otra dirección, pegue un array de PHP (con o sin $datos = o return delante): el resultado coincide con lo que imprime json_encode con JSON_PRETTY_PRINT, salvo que las letras con tilde y la ñ quedan legibles en lugar de pasar a \u00f1.

Esta herramienta también se busca como convertir json a array php, convertir json a array php online, json a array php, array php a json, json to php array, php array to json.

¿Qué es Array de PHP?

El array de PHP es la estructura de datos para todo uso del lenguaje: una secuencia ordenada de pares clave-valor. La misma estructura guarda una lista simple como 'manzana', 'pera' y un registro con campos con nombre como 'ciudad' => 'Morelia'. Las claves son enteros o textos; los valores, textos, números, true/false, null u otros arrays. PHP no tiene tipos separados de lista y objeto como JSON; al convertir, decide el orden de las claves.

¿Qué es json_encode y json_decode?

json_encode convierte un valor de PHP en texto JSON y json_decode convierte texto JSON en un valor de PHP; las dos vienen integradas en PHP. Por defecto, json_decode devuelve los objetos JSON como objetos stdClass; con true como segundo argumento obtiene arrays anidados como los que escribe esta página. Sin opciones, json_encode también escapa las letras con tilde como secuencias \u y las barras como \/; JSON_UNESCAPED_UNICODE y JSON_UNESCAPED_SLASHES desactivan ese comportamiento.

¿Cuál es la diferencia entre JSON y un array de PHP?

JSON es un formato de texto pensado para intercambiar datos entre lenguajes: las claves siempre son textos entre comillas dobles, y la coma final, los comentarios y las comillas simples están prohibidos. Un array de PHP forma parte del código fuente PHP: se permiten comillas simples, claves enteras, coma final y comentarios, pero solo PHP puede leerlo. Use JSON cuando los datos vayan a otro programa, a un navegador o a una API; use un array de PHP cuando se queden dentro de su proyecto PHP como configuración fija o datos de prueba.

Qué cambia cuando un array de PHP pasa a JSON

PHP tiene un solo tipo de array, que sirve a la vez como lista ordenada y como tabla clave-valor. JSON separa ambas cosas: arrays entre corchetes y objetos entre llaves. Esta página aplica la misma regla que json_encode: si las claves van 0, 1, 2 … en orden y sin huecos, el resultado es un array JSON; si una sola clave es distinta, es un objeto JSON. Así, [3 => 'x', 1 => 'y'] se convierte en {"3": "x", "1": "y"}, y un array vacío siempre da [], nunca {}.

Las claves también se leen con las reglas de conversión de PHP. Una clave de texto que parece entero, como '7', pasa al número 7, mientras que '07' sigue siendo texto; la clave true pasa a 1 y la clave null a un texto vacío. Si la misma clave aparece dos veces, gana el último valor y conserva la primera posición, igual que en PHP; la línea de estado indica cuántas claves se repitieron. Un elemento escrito sin clave recibe la mayor clave entera vista hasta ese punto más uno.

  • ['a', 'b'] → ["a", "b"] (una lista ordenada sigue siendo array JSON)
  • [1 => 'a', 2 => 'b'] → {"1": "a", "2": "b"} (no empieza en 0)
  • ['7' => 'x'] → la clave pasa al entero 7; '07' sigue siendo texto
  • 1.0 → 1.0 (se conserva el float), 0x1A → 26, 1_000 → 1000

Qué no se puede convertir: constantes, funciones, variables dentro del texto

Esta herramienta no ejecuta código PHP; solo lee valores literales: textos entre comillas simples o dobles, enteros, decimales, true, false, null y arrays anidados. Las constantes como PHP_EOL o __DIR__, las llamadas como date(), la concatenación 'a' . 'b' y los textos entre comillas dobles con una variable dentro ("Hola $nombre") solo reciben su valor cuando el programa se ejecuta. En lugar de adivinar, la herramienta se detiene e indica la línea y la columna. En ese caso escriba el valor a mano o ejecute echo json_encode($array); en PHP.

En la otra dirección, cuidado con los enteros grandes. Un número JSON como 12345678901234567890 supera el límite de enteros de 64 bits de PHP (9223372036854775807); al leer esa línea, PHP lo convierte en float y las últimas cifras se redondean. Los números largos con los que no se calcula —identificadores, números de tarjeta, CLABE o códigos de barras— conviene guardarlos como texto (entre comillas) en el JSON para evitar esa pérdida.

Preguntas frecuentes

¿Cómo convertir JSON a un array de PHP?

Pegue el JSON en el panel izquierdo de esta página; el panel derecho muestra código PHP con la forma $datos = [...];. Para convertir en tiempo de ejecución dentro de su propio código, use json_decode($json, true); sin true como segundo argumento, PHP devuelve un objeto stdClass y no un array.

¿Cómo convertir un array de PHP a JSON?

Pegue el array, junto con la línea $datos = [...]; o return [...];, en el panel izquierdo; la dirección cambia sola a PHP → JSON. El resultado es igual a json_encode($datos, JSON_PRETTY_PRINT), con la diferencia de que las tildes y la ñ quedan legibles en lugar de convertirse en secuencias \u (lo que hace la opción JSON_UNESCAPED_UNICODE en PHP).

¿Hay diferencia entre [ ] y array( )?

No, ambas crean el mismo array. La sintaxis corta con corchetes existe desde PHP 5.4 (2012) y es la que usan los estándares de código actuales. Elija array( ) solo si el código todavía debe funcionar en PHP 5.3 o anterior.

¿Por qué algunos textos van entre comillas simples y otros entre comillas dobles?

Entre comillas simples, PHP deja \n y $ tal cual; por eso son la opción por defecto y solo se escapan la barra invertida y la comilla simple. Si un texto contiene un carácter invisible como un salto de línea o un tabulador, se usan comillas dobles, porque \n solo significa salto de línea entre comillas dobles; en ese caso el signo $ se escribe \$ para que PHP no lo tome por una variable.

¿Los datos que pego se envían a un servidor?

No. La lectura del JSON o del PHP, la conversión y la preparación del archivo ocurren por completo en su navegador; ni siquiera un array de configuración con la contraseña de la base de datos o una clave de API sale de esta página.