Convertidor de PHP a JSON
Pega clases, arrays u objetos de PHP. Recibe JSON limpio.
Qué hace esta herramienta
Si tienes una clase de PHP llena de propiedades tipadas y necesitas un payload JSON para un test, una llamada a una API o un fixture, escribir el array a mano es un rollo. Pega el PHP aquí y recibes JSON válido con todas las propiedades intactas. Funciona con una sola clase, un fichero de entidades Doctrine, un modelo de Laravel Eloquent o un array asociativo pelado — mismo resultado, JSON válido de salida.
El conversor imita lo que hace json_encode() en tiempo de ejecución. Las propiedades tipadas (PHP 7.4+) y las readonly (PHP 8.1+) salen como claves JSON normales. Enteros, flotantes, booleanos y strings se mapean uno a uno. null pasa a ser null en JSON. Las instancias anidadas se expanden en objetos JSON anidados. Los arrays asociativos se convierten en objetos JSON; los arrays con índices numéricos, en arrays JSON — la misma distinción que aplica json_encode.
También se manejan las funcionalidades modernas de PHP. Los enums con backing se serializan con su valor de respaldo (string o int). DateTimeImmutable sale como una cadena ISO-8601. Si pegas varias clases a la vez — algo habitual cuando sacas código de Packagist — cada clase de nivel superior se convierte en su propia clave del JSON, con los tipos anidados expandidos. Los métodos, constantes y propiedades estáticas se ignoran; sólo los datos de instancia acaban en la salida.
Cómo usarlo
Tres pasos. Funciona igual pegues diez líneas o un Model entero.
Pega tu PHP (o prueba el ejemplo)
Suelta tu PHP en el editor de la izquierda tal cual. Una definición de clase, una nueva instancia, un array asociativo o varias clases — todo vale. Pulsa Cargar ejemplo si quieres ver primero un caso realista.
Mantén la sintaxis PHP completa — namespaces, sentencias use, modificadores de visibilidad, atributos. El parser ignora el boilerplate que no necesita.
Pulsa Convertir
Haz clic en el botón verde Convertir. La herramienta lee el PHP, conserva cada propiedad y clase, y construye el JSON de una pasada. Verás un pequeño indicador de carga mientras trabaja.
Copia el JSON
El panel de la derecha se llena con JSON indentado. Cópialo directamente al cuerpo de una petición HTTP, a un fixture de PHPUnit, a un fichero de configuración o a la documentación de tu API.
Cuándo viene realmente bien
Montar payloads para peticiones de API
Tienes un DTO CreateOrderRequest y necesitas el cuerpo JSON correspondiente para Postman, curl o un test de integración. Pega la clase y sácate el payload.
Seeders para Laravel o Symfony
Convierte un montón de líneas <code>new Product(...)</code> de factory en un fichero JSON de seed para database:seed o para los cargadores de fixtures — se acabaron los arrays a mano.
Mantener honestos los ejemplos de OpenAPI
Genera ejemplos JSON para tu spec OpenAPI directamente desde tus DTOs reales, así los ejemplos del schema siguen en sincronía con el código.
Depurar la salida de json_encode
Cuando un objeto no se serializa como esperas, pégalo aquí para ver su forma limpia — luego compárala con lo que realmente produce <code>json_encode()</code>.
Preguntas habituales
¿Soporta las propiedades tipadas y readonly de PHP 8?
Sí. Propiedades tipadas, tipos nullables (?string), modificadores readonly y propiedades promocionadas en el constructor se detectan todas. La pista de tipo no cambia el valor JSON — sólo le dice al parser qué esperar.
¿Y los enums?
Los enums con backing se serializan con su valor de respaldo (string o int). Los enums puros sin tipo de respaldo salen con el nombre del caso. Coincide con el comportamiento estándar de json_encode sobre un BackedEnum.
Array asociativo vs array indexado — ¿cuál acaba siendo objeto?
Misma regla que json_encode: un array secuencial indexado desde 0 se vuelve array JSON; cualquier array con claves string (o claves enteras no secuenciales) se vuelve objeto JSON.
¿Cómo se serializan DateTime y DateTimeImmutable?
Como cadenas ISO-8601, el mismo formato que te devuelve $dt->format(DateTime::ATOM). Si la fecha incluye zona horaria, el offset se conserva en la salida.
¿Puedo pegar un fichero entero de models?
Sí. Cada clase de nivel superior pasa a ser su propia entrada JSON, los objetos anidados se expanden solos y las propiedades inicializadas en el constructor se incluyen. Las propiedades private y protected también salen — el parser mira la forma, no la visibilidad.
¿Guardáis mi código?
Tu PHP viaja al backend para la conversión y no se persiste — no logueamos el payload. Para código sensible, dale un repaso antes de pegarlo.
Otras herramientas que te pueden hacer falta
PHP a JSON es una pieza. Estas casan bien con ella: