{ } JSON Workbench0 network requests. Check DevTools

"JSON to PHP":{ }

Paste a JSON sample and get clean PHP classes. Nested objects become named types, arrays become typed collections, and nullable fields are handled. Powered by quicktype's inference engine running 100% in your browser: zero network requests, so real API payloads stay on your machine.

What is a JSON to PHP converter?

Hand-writing classes for an API response is slow and error-prone. This tool infers PHP classes from a JSON sample: nested objects become named types, arrays become typed collections, and null/missing values become optional fields. It runs quicktype's inference engine entirely in your browser, so real API payloads (often containing user data or credentials) never leave your machine.

PHP mapping notes

  • Clean PHP 8 classes with constructor property promotion: one typed, public property per JSON field, no getter/setter/validator boilerplate.
  • JSON integers map to int and decimals to float; each nested object becomes its own class, referenced by the parent.
  • Arrays are typed array with a @param T[] PHPDoc so your IDE and static analyzer know the element type (a nested class for arrays of objects).

How to use

  1. Paste a JSON sample (an API response works well) into the Input pane.
  2. Generated PHP classes appear instantly. Nested objects become their own named types.
  3. Non-standard JSON (single quotes, trailing commas, comments) is auto-repaired first.
  4. Copy the code into your project.

Examples

JSON → PHP classes

Input
{
  "id": 42,
  "name": "workbench",
  "owner": { "email": "[email protected]", "active": true }
}
Output
class Owner {
    public function __construct(
        public string $email,
        public bool $active,
    ) {}
}

class Root {
    public function __construct(
        public int $id,
        public string $name,
        public Owner $owner,
    ) {}
}

FAQ

How do I convert JSON to PHP types?

Paste any JSON sample. The classes are inferred from the values and nesting, entirely in your browser. Nothing is uploaded.

How are nested objects handled?

Each distinct nested object becomes its own named type, referenced from the parent, arrays of objects included.

What about optional or null fields?

Fields that are null or missing in parts of the sample are typed as optional/nullable in the generated code.

Can I paste multiple samples?

Paste an array of objects: the type is inferred from the union of all items, which catches optional fields a single sample would miss.

Which PHP version does the output target?

PHP 8.0+, using constructor property promotion and typed properties. For older PHP, expand each promoted parameter into an explicit property plus an assignment in the constructor.

Is my JSON uploaded?

No. Generation runs 100% in your browser via quicktype's engine. Check DevTools: zero network requests.

Related tools