logo
GeekFormat

JSON naar PHP

Gratis online tool JSON naar PHP, converteert JSON met één klik direct naar uitvoerbare PHP klassen. Ondersteunt twee stijlen ArrayObject en stdClass, genereert automatisch namespace, typed properties (PHP 7.4+), optionele readonly class (PHP 8.1+), implementeert JsonSerializable, geneste objecten automatisch opgesplitst in onafhankelijke klassen, arrays automatisch geconverteerd naar PHP array, lokale uitvoering in browser zonder download.

Gerelateerde aanbevelingen

Over JSON naar PHP klasse en PHP entiteitsklasse modellering

De JSON naar PHP tool (JSON to PHP Converter) is een hulpprogramma dat JSON datastructuren automatisch converteert naar standaard PHP klassecode. Het bevrijdt ontwikkelaars van het repetitieve werk van handmatig schrijven van namespace / class / public eigenschappen / constructor, bijzonder geschikt voor het snel converteren van voorbeeld JSON in API interface documentatie naar PHP entiteitsklassen die direct via require in Composer projecten kunnen worden opgenomen.

Deze tool ondersteunt 4 hoofd codestijlen: ① ArrayObject stijl (breidt \ArrayObject uit, ondersteunt array en object toegang, gebruikelijk in Laravel ecosysteem / Symfony Serializer); ② stdClass stijl (breidt \stdClass uit, alleen object toegang, standaardgedrag WordPress / json_decode); ③ readonly class stijl (PHP 8.1+ final readonly class, onveranderbaar na constructie, geschikt voor DTO); ④ Laravel integratie stijl (implementeert Jsonable + Arrayable, werkt met Eloquent API Resource). Ontwikkelaars kunnen vrij kiezen op basis van framework dat door project wordt gebruikt.

PHP type mapping is de kern van JSON naar PHP. De tool mapt JSON basistypen naar PHP standaardtypen: string mapt naar string, geheel getal naar int, float naar float, boolean naar bool, array naar array, geneste objecten naar onafhankelijke klasse (eerste letter van veldnaam hoofdletter), null naar ?type (nullable eigenschap). Alle eigenschappen worden gedeclareerd met typed properties van PHP 7.4+, IDE kan direct typecontrole doen.

Een ander onderscheidend sterk punt is 'automatisch JsonSerializable interface implementeren': elke PHP klasse gegenereerd door deze tool implementeert automatisch \JsonSerializable en genereert methode public function jsonSerialize(): mixed { return [...] }. Dit betekent dat u direct echo json_encode($user) kunt doen om JSON string weer te geven, en json_encode roept automatisch gegevens aan van de array geretourneerd door jsonSerialize(). In Laravel met Jsonable interface kunt u ook direct return response()->json($user) doen zonder enige extra verwerking.

In tegenstelling tot sommige online tools die JSON naar server moeten uploaden om te verwerken, vinden alle berekeningen van deze tool plaats in de browser. quicktype-core wordt geladen en uitgevoerd via Web Worker; JSON analyse, type inferentie, PHP code generatie, ZIP pakketvorming gebeuren lokaal, sturen gegevens naar geen enkele server. Dit is bijzonder belangrijk voor JSON met API sleutels, gebruikersvertrouwelijkheidsvelden of niet uitgebrachte bedrijfsstructuren; gegevens worden uit geheugen gewist na pagina sluiting.

Gegenereerde code moet over het algemeen in Composer project worden geplaatst voor gebruik. U moet ervoor zorgen dat PHP versie voldoet aan vereisten in composer.json (PHP 7.4+ ondersteunt typed properties, PHP 8.1+ ondersteunt readonly class), dan gegenereerde klassen kopiëren naar src map, automatisch laden via namespace (PSR-4). Vervolgens kunt u gegevens consumeren met json_decode($jsonString, false) of json_decode($jsonString, true) + deserialisatie, genietend van de voordelen van het PHP typesysteem.

Toepassingsgevallen

  • Laravel backend ontwikkeling: snel JSON voorbeeld van API interface documentatie converteren naar Eloquent Model / API Resource klassen, antwoorden direct serialiseren met geïntegreerde Jsonable / Arrayable interfaces van Laravel
  • Symfony Serializer integratie: JSON geretourneerd door derde partij API's converteren naar PHP klassen in ArrayObject stijl, diep object mapping en gegevensvalidatie doen met Symfony Serializer
  • WordPress REST API: JSON structuur geretourneerd door aangepaste endpoints converteren naar PHP klassen in stdClass stijl, directe uitvoer met wp_send_json(), conform standaardgedrag van wp_json_encode()
  • PHP 8.1+ readonly DTO: JSON converteren naar final readonly class voor Data Transfer Objects (DTO), onveranderbaar na constructie, voorkomend dat bedrijfslogica per ongeluk antwoordgegevens wijzigt
  • Composer pakket ontwikkeling: JSON Schema converteren naar PHP klassen dan publiceren op Packagist als SDK modellaag, zodat andere Composer projecten het require en hergebruiken
  • Unit test fixtures: JSON fixtures converteren naar PHP klassen dan gebruiken met json_decode + deserialisatie voor gegevensgebaseerde tests, assertion van gestructureerde velden
  • Gegevensmigratie scripts: JSON configuratiebestanden converteren naar PHP klassen dan gebruiken voor sterk getypte toegang in bedrijfslogica, makkelijker IDE autocompletion en typecontrole dan array toegang
  • Frontend Mock integratie: backend converteert eerst JSON modellen naar PHP klassen, frontend krijgt tegelijkertijd de bijbehorende TypeScript interface / PHP klasse, houdt typen consistent aan beide uiteinden
  • Code review: JSON geretourneerd door API direct converteren naar leesbare PHP klassen, vergemakkelijkt discussie over veldnaamgeving, eigenschapszichtbaarheid tijdens Code Review
  • Legacy project refactoring: dynamische toegangscode gebaseerd op associatieve array refactoren naar sterk getypte toegang gebaseerd op PHP klasse, statische analyse doen met PHPStan / Psalm
  • PHPUnit DataProvider: JSON testgegevens converteren naar PHP klassen dan injecteren in testcase via DataProvider, IDE suggereert automatisch eigenschapsvelden
  • Backend API integratie snake_case: backend API retourneert snake_case velden, frontend PHP systeem activeert 'converteer naar camelCase' + ArrayObject stijl voor naadloze integratie
  • Statische analyse PHPStan: gegenereerde klassen hebben natuurlijk typedeclaraties, met phpstan analyse --level=8 typefouten onderscheppen in CI
  • Onderwijs en training: in PHP onderwijsscenario's, voorbeeld JSON converteren naar PHP klassen om objectgeoriënteerd modelleren, typesysteem, interface implementatie te demonstreren
  • API gateway laag: JSON geretourneerd door upstream microservices converteren naar PHP klassen voor aggregatie in gatewaylaag, downstream PHP diensten consumeren sterk getypt via klasse-eigenschappen
  • Berichtenwachtrij consumptie: JSON berichtlichamen geconsumeerd van RabbitMQ / Kafka converteren naar PHP klassen dan opslaan of doorsturen, rigoureuze analyse met JSON_THROW_ON_ERROR
  • E-commerce SKU/SPU modellering: product JSON structuur (multi-specificatie / multi-afbeelding / multi-attribuut) converteren naar PHP klassen, met ArrayObject stijl N+1 query optimalisatie doen in Laravel
  • WebHook callback handtekeningverificatie: JSON handtekeningverificatiestructuur van betalingsgateways, logistieke callbacks converteren naar PHP klassen, handtekeningverificatie met hash_hmac()
  • OpenAPI toolchain: OpenAPI 3.x JSON schema converteren naar PHP klassen, integreren met PHP client generatie workflow van Swagger Codegen / Apifox
  • Gegevens ETL pipeline: JSON van upstream gegevensbronnen (MySQL JSON veld / MongoDB / Elasticsearch) converteren naar PHP klassen dan gegevensopschoning en opslag

Hoe te gebruiken

  1. Plak JSON object (aanbevolen) of array in linker editor, of klik op 'Sample' om Chinees voorbeeld te laden (met geneste address / company / tags)
  2. Klik op 'Instellingen' knop in werkbalk, selecteer in dialoog: ① stel root klassenaam in (bijv. User) en namespace (bijv. App\Models); ② selecteer codestijl (ArrayObject / stdClass / readonly class); ③ selecteer codefunctionaliteiten (typed properties / Laravel integratie / Symfony Serializer); ④ selecteer veldnaamgevingsstrategie (origineel behouden / camelCase / alles kleine letters / UPPER_SNAKE)
  3. Tool converteert automatisch binnen 400ms, rechts toont alle gegenereerde PHP klassen (elke klasse een aparte kaart, titelbalk toont huidige stijl badge in realtime); als JSON formaatfouten heeft wordt knop 'JSON repareren' weergegeven
  4. Controleer dat gegenereerde klassenamen, eigenschapnamen en interfaces aan verwachtingen voldoen; als aanpassing nodig kunt u sleutelnamen van bron JSON wijzigen of Instellingen opnieuw openen om opties te wijzigen
  5. Wanneer tevreden kunt u op 'Kopiëren' knop van individuele klasse klikken om in IDE te plakken, of op 'Download ZIP' in werkbalk klikken om alle klassen in één klik te downloaden (mapstructuur georganiseerd op namespace pad)

Functies

  • Twee vrij schakelbare codestijlen: ArrayObject (breidt \ArrayObject uit, ondersteunt array-stijl toegang $obj['key']) / stdClass (breidt \stdClass uit, ondersteunt object-stijl toegang $obj->key), compatibel met verschillende scenario's zoals Laravel serialisatie, WordPress REST, Symfony Serializer
  • Compleet PHP sjabloon: genereert automatisch namespace declaratie + use statements + klasse header commentaar (Copyright + generatie timestamp) + klassedefinitie + openbare getypte eigenschappen (PHP 7.4+), direct via require in Composer project te gebruiken zonder handmatig boilerplate aan te vullen
  • Automatisch geïmplementeerde JsonSerializable interface: elke gegenereerde klasse maakt automatisch public function jsonSerialize(): mixed { return [...] }, serialiseert JSON direct met json_encode(), nul extra boilerplate code
  • Optionele PHP 8.1+ readonly class: bij activering voegt gegenereerde klasse final readonly class toe, alle eigenschappen zijn readonly, onveranderbaar na constructie, geschikt voor scenario's met onveranderlijke API response DTO's
  • Intelligente type inferentie: string → string, integer → int, float → float, bool → bool, array → array, geneste objecten → onafhankelijke klasse, null → ?type (nullable eigenschap), zonder handmatige veldtypespecificatie
  • Geneste klassen automatisch opgesplitst: geneste objecten genereren onafhankelijke PHP klassen met eerste letter van veldnaam hoofdletter (bijv. address → Address), objecten in arrays benoemd volgens regel 'verwijder s aan het eind' (bijv. users → User), alle geneste klassen implementeren ook JsonSerializable
  • 4 veldnaamgevingsstrategieën: origineel behouden / snake_case naar camelCase (user_name → userName) / alles kleine letters / UPPER_SNAKE constante stijl, conform verschillende coderingsstandaarden PSR-1 / Laravel / Symfony
  • Laravel integratie met één klik: bij activering automatisch Jsonable, Arrayable interfaces geïmplementeerd, toArray() / toJson() methodes toegevoegd, direct bruikbaar als Eloquent API Resource, met Composer autoload
  • Kopieer individuele klasse + multi-file ZIP download: elke PHP klasse heeft aparte 'Kopiëren' knop, kan met één klik ZIP-pakket downloaden, georganiseerd op namespace mapstructuur (bijv. App/Models/User.php), uitpakken en gebruiken
  • Lokale browser uitvoering + geschiedenis: JSON analyse, PHP klasse generatie, ZIP pakketvorming via JavaScript (quicktype-core + JSZip) in browser, gegevens niet geüpload naar server; geïntegreerde localStorage geschiedenis voor 200 recente items

Codevoorbeelden

PHP: Serialiseer klassen gegenereerd door deze tool met json_encode()

php

PHP klassen gegenereerd door deze tool implementeren standaard JsonSerializable interface, retourneren JSON direct met json_encode() zonder enige extra verwerking.

<?php

require_once 'vendor/autoload.php';

use App\Models\User;

// Simuleer JSON string ontvangen van API
$jsonString = '{"id":1,"name":"Alice","email":"a****@***********","isActive":true}';

// 1) Deserialiseer naar klasse gegenereerd door deze tool
$userData = json_decode($jsonString, true);
$user = new User(
    $userData['id'],
    $userData['name'],
    $userData['email'],
    $userData['isActive']
);

// 2) Sterk getypte veldtoegang (IDE autocompletion + PHPStan statische controle)
echo $user->name;          // Alice
echo $user->email;         // a****@***********
echo $user->isActive ? 'Actief' : 'Inactief'; // Actief

// 3) json_encode() roept automatisch jsonSerialize() aan, geen extra code nodig
echo json_encode($user, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
/*
{
    "id": 1,
    "name": "Alice",
    "email": "a****@***********",
    "isActive": true
}
*/

PHP: Laravel API Resource integratievoorbeeld

php

Na het aanvinken van Laravel-integratie kunnen klassen die door deze tool worden gegenereerd direct worden gebruikt als Eloquent API Resource, waarbij reacties worden geformatteerd met toArray() / toJson().

<?php

namespace App\Http\Controllers;

use App\Models\User;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;

class UserController extends Controller
{
    /**
     * GET /api/users/{id}
     */
    public function show(int $id): JsonResponse
    {
        // 1) 从数据库或外部 API 获取数据
        $userData = $this->fetchUserFromApi($id);

        // 2) 用本工具生成的 User 类包装
        $user = new User(
            $userData['id'],
            $userData['name'],
            $userData['email'],
            $userData['isActive']
        );

        // 3) 直接 return response()->json($user)
        //    Laravel 会自动调用 jsonSerialize()
        return response()->json($user);
    }

    /**
     * POST /api/users
     */
    public function store(Request $request): JsonResponse
    {
        // 4) 反向用法:把请求 JSON 反序列化为 User 类
        $user = User::fromArray($request->all());

        // 5) 用 toArray() 获取数组形式
        $payload = $user->toArray();

        // 6) 执行业务逻辑(如入库 / 调用第三方 API)
        $this->userService->create($payload);

        return response()->json([
            'message' => 'User created',
            'data' => $user,
        ], 201);
    }
}

/*
 * 对应 composer.json 依赖:
 * "require": {
 *     "php": "^8.1",
 *     "laravel/framework": "^11.0"
 * }
 */

PHP: Symfony Serializer integratievoorbeeld

php

Klassen die in ArrayObject-stijl door deze tool worden gegenereerd, kunnen werken met de Symfony Serializer-component voor diepe serialisatie en deserialisatie, geschikt voor complexe API-gatewaylagen.

<?php

namespace App\Service;

use App\Models\User;
use Symfony\Component\Serializer\SerializerInterface;
use Symfony\Component\Serializer\Normalizer\PropertyNormalizer;

class UserSerializer
{
    private SerializerInterface $serializer;

    public function __construct(SerializerInterface $serializer)
    {
        // 使用 PropertyNormalizer 处理 public 属性
        $this->serializer = $serializer;
    }

    /**
     * 将 User 对象序列化为 JSON 字符串
     */
    public function toJson(User $user): string
    {
        return $this->serializer->serialize($user, 'json');
    }

    /**
     * 将 JSON 字符串反序列化为 User 对象
     */
    public function fromJson(string $json): User
    {
        return $this->serializer->deserialize($json, User::class, 'json');
    }

    /**
     * 批量反序列化(如从 MongoDB 导出的 JSON 数组)
     */
    public function fromJsonArray(string $jsonArray): array
    {
        $users = [];
        $data = json_decode($jsonArray, true);

        foreach ($data as $item) {
            $users[] = User::fromArray($item);
        }

        return $users;
    }
}

// 使用示例
$serializer = new UserSerializer($serializerService);

$json = '{"id":1,"name":"Alice","address":{"city":"Beijing","zip":"100000"},"tags":["php","symfony"]}';

// 反序列化为本工具生成的 User 对象
$user = $serializer->fromJson($json);
echo $user->name;                  // Alice
echo $user->address->city;         // Beijing (强类型访问)
print_r($user->tags);              // ['php', 'symfony']

// 序列化回 JSON
$jsonOutput = $serializer->toJson($user);

Best Practices

Voor de meeste PHP-backendprojecten ondersteunen klassen gegenereerd in ArrayObject-stijl zowel arraytoegang ($obj['key']) als objecttoegang ($obj->key); met de standaard geïmplementeerde JsonSerializable-interface roept json_encode() automatisch het door jsonSerialize() geretourneerde array aan. Dit is het meest universele objectdatadragerpatroon in het PHP-ecosysteem, compatibel met bijna alle mainstream-frameworks zoals Laravel, Symfony, CodeIgniter.

De in PHP 8.1+ geïntroduceerde readonly class is de beste praktijk voor DTO's: eigenschappen onveranderlijk na constructie, waardoor wordt voorkomen dat bedrijfslogica per ongeluk antwoordgegevens wijzigt; constructorpromotie maakt code beknopter (public function __construct(public int $id, public string $name) {} één regel voor eigenschapsdeclaraties). We raden aan om API-antwoord-DTO's, WebHook-callbackstructuren, externe API-clientmodellen over te zetten naar de readonly class-stijl.

Laravel-databasevelden zijn standaard snake_case, maar PHP-eigenschappen bevelen camelCase aan. De strategie 'Converteer naar camelCase' van deze tool converteert automatisch, terwijl de retourarray-sleutels in jsonSerialize() de originele snake_case behouden; de json_encode()-uitvoer blijft snake_case. Dit respecteert zowel de Laravel-modeltoegangsgewoonten als handhaaft API-compatibiliteit.

Gegenereerde ZIP-pakketten worden georganiseerd op namespace-pad (bijv. App/Models/User.php). Configureer de sectie autoload.psr-4 in composer.json, bijvoorbeeld: "App\\": "src/", voer vervolgens composer dump-autoload uit. Op deze manier zal Composer App\Models\User automatisch toewijzen aan src/Models/User.php zonder handmatige require.

Deze tool genereert standaard getypte eigenschappen (PHP 7.4+), waarvan de eigenschapstypen volledig kunnen worden afgeleid door PHPStan in de --level=8-modus. We raden aan phpstan analyse ./src --level=8 te integreren in de CI-pijplijn om typefouten te onderscheppen. Psalm ondersteunt ook PropertyTypeProvider voor sterke typevalidatie.

Deze tool draait volledig lokaal in de browser en uploadt geen gegevens. Maar maak er een gewoonte van: ① gevoelige JSON met API-sleutels / tokens / gebruikersprivacy onherkenbaar maken vóór conversie; ② zorg ervoor dat de netwerkverbinding is verbroken bij gebruik van deze tool voor grote interne bedrijfsstructuren (niet-uitgebrachte interfaces); ③ commit geen voorbeeldgegevens met gevoelige informatie in openbare repositories na codegeneratie.

Geneste JSON-objecten genereren recursief onafhankelijke PHP-klassen. Als JSON-nestniveaus meer dan 6 lagen bedragen (bijv. meerlaags geneste menu's, organigrammen, complexe bedrijfsdocumenten), explodeert het aantal gegenereerde klassen (N geneste klassen per laag), laadt de IDE langzaam en wordt onderhoud moeilijk. Aanbevelingen: ① verdeel JSON in meerdere modules en converteer afzonderlijk; ② of herstructureer na generatie handmatig naar arrayindexering ($user['profile']['address']['city']) in plaats van klassensting.

JSON-nullwaarden worden standaard afgeleid als ?mixed (nullable mixed), wat een veilige terugval is maar geen precies type. Als het veldtype bekend is (bijv. "nickname": "" leidt string af), geef eerst een voorbeeldwaarde in de bron-JSON, verwijder na generatie de voorbeeldwaarde en wijzig in een precies type zoals ?string, wat de nauwkeurigheid van de PHPStan-statistische analyse aanzienlijk verbetert.

Veelgestelde vragen

Hoe converteer ik JSON naar een PHP klasse?

Plak JSON inhoud in het invoergebied links, de tool converteert automatisch binnen 400ms; of klik op de 'Convert' knop in de werkbalk. Na conversie toont rechts alle gegenereerde PHP klassen, elke klasse heeft een aparte 'Kopiëren' knop; klik op 'Download ZIP' in de werkbalk om alle klassen in één klik te verpakken en downloaden (inclusief namespace mapstructuur).

Welke JSON datastructuren worden ondersteund?

Ondersteunt twee structuren: ① JSON object (als root klasse, genereert automatisch class RootClass); ② JSON array (eerste object in de array als root klasse sjabloon). Alle geneste objecten worden recursief verwerkt tot onafhankelijke klassen; objecten in arrays worden recursief verwerkt tot klassen die overeenkomen met het array elementtype.

Wat bevatten de gegenereerde PHP klassen?

Elk gegenereerd .php bestand bevat: ① bestand header commentaar (Copyright + automatisch gegenereerde timestamp); ② namespace declaratie; ③ use statements (inclusief \JsonSerializable / \ArrayAccess etc. automatisch geïmporteerd naar behoefte); ④ klassedefinitie (ArrayObject / stdClass / readonly class volgens instellingen); ⑤ interface implementaties (JsonSerializable / Jsonable / Arrayable volgens instellingen); ⑥ openbare getypte eigenschappen (PHP 7.4+); ⑦ constructor (toewijzing van alle eigenschappen gegenereerd volgens instellingen); ⑧ methodes jsonSerialize() / toArray() / toJson() etc. Volledig klaar voor php -l syntaxcontrole en require gebruik.

Wat is het verschil tussen ArrayObject en stdClass stijlen?

ArrayObject stijl: gegenereerde klasse breidt \ArrayObject uit, ondersteunt zowel array-stijl toegang $obj['key'] als object-stijl toegang $obj->key, retourneert object tijdens json_encode(). stdClass stijl: gegenereerde klasse breidt \stdClass uit, ondersteunt alleen object-stijl toegang $obj->key, lichter maar geen directe array toegang. Het Laravel/WordPress ecosysteem gebruikt standaard stdClass stijl (standaardgedrag van json_decode), Symfony Serializer gebruikt standaard ArrayObject stijl.

Ondersteunt het genereren van Laravel API Resource?

Ja. Na activering van de optie 'Laravel integratie met één klik' in instellingen, genereert de tool automatisch geïmplementeerde Jsonable, Arrayable interfaces, voegt methodes toJson($options = 0) en toArray() toe, de gegenereerde klassen kunnen direct in Eloquent API Resource worden gebruikt (zoals new UserResource($user) of $user->toArray()). Gebruikt ook automatisch Illuminate\Contracts\Support\Jsonable en Illuminate\Contracts\Support\Arrayable.

Hoe ziet de gegenereerde code eruit in PHP 8.1 readonly class modus?

Na activering van readonly class worden gegenereerde PHP klassen aanzienlijk vereenvoudigd. Bijv. class User met readonly geactiveerd heeft ongeveer 12 regels: final readonly class User implements \JsonSerializable { public function __construct(public int $id, public string $name) {} public function jsonSerialize(): array { return [...] } }. Alle eigenschappen worden als readonly gedeclareerd via constructor property promotion, onveranderbaar na constructie. Opmerking: project vereist PHP 8.1+, readonly velden kunnen alleen via constructor worden toegewezen.

Hoe converteer ik snake_case veldnamen naar camelCase?

Selecteer in de groep 'Veldnaamgevingsstrategie' van de instellingendialoog de modus 'Converteer naar camelCase', de tool converteert automatisch JSON veldnamen van snake_case naar de door PHP aanbevolen naamgevingsstijl. Bijv. user_name → userName, created_at → createdAt, is_active → isActive. Bovendien als JSON afkomstig is van Laravel route binding, zijn klasse-eigenschappen direct toegankelijk via $request->userName zonder handmatige tussenconversie.

Hoe worden geneste JSON objecten verwerkt?

De tool maakt automatisch onafhankelijke PHP klassen voor geneste objecten. Naamgevingsregel: geneste objectsleutel met eerste letter hoofdletter als klassenaam (bijv. address → Address), objectsleutel in arrays door s aan eind te verwijderen dan eerste letter hoofdletter (bijv. users → User). Alle geneste klassen bevatten ook volledige velden, constructor, jsonSerialize() methode, namespace consistent met root klasse, kunnen worden geïmporteerd via use App\Models\Address.

Worden array velden automatisch geconverteerd?

Ja. Array velden in JSON worden automatisch geconverteerd naar PHP array eigenschappen, elementtype automatisch afgeleid van het eerste element van de array. Bijv. ["a","b","c"] → array (geannoteerd als array<string> in commentaar); [{...},{...}] → array (geannoteerd als array<User> in commentaar, User is nieuwe klasse benoemd vanaf sleutel); lege array [] standaard array (geannoteerd als array<mixed> in commentaar). PHP 8.0+ met PHPDoc annotaties kan typesuggesties krijgen in IDE.

Hoe wijzig ik root klassenaam en namespace?

Er is een Instellingen knop in de rechterbovenhoek van de werkbalk, klik om instellingendialoog te openen, u kunt configureren: ① root klassenaam (standaard JsonRootClass); ② namespace (standaard App\Models). Na wijziging worden alle gegenereerde klassenamen synchroon bijgewerkt, mapstructuur in ZIP ook georganiseerd op namespace (bijv. App/Models/User.php).

Is de download een enkel .php bestand of ZIP-pakket?

Download is ZIP-pakket (User.zip), bevat alle gegenereerde PHP klassen, georganiseerd in mapstructuur per namespace pad. Bijv. wanneer namespace App\Models is, is bestandsstructuur in ZIP: App/Models/User.php, App/Models/Address.php, App/Models/Company.php etc. Kan direct in de src map van Composer project worden geïmporteerd via unzip commando of IDE.

Kan ik een individuele klasse direct in de IDE kopiëren?

Ja. Elke gegenereerde PHP klasse wordt weergegeven als een aparte kaart, rechterbovenhoek van kaart heeft 'Kopiëren' knop, bij klikken wordt alle volledige code van de klasse (inclusief <?php + namespace + use + klasse + eigenschappen + constructor + methodes) naar klembord gekopieerd, kan direct in IDE zoals PhpStorm / VS Code / Sublime worden geplakt.

Hoe zorg ik ervoor dat gegenereerde klassen de JsonSerializable interface implementeren?

Standaard geactiveerd. Alle gegenereerde PHP klassen implementeren automatisch \JsonSerializable en genereren methode public function jsonSerialize(): array { return [...] }, geretourneerde array samengesteld in volgorde van klasse-eigenschappen. U kunt direct echo json_encode($user) doen om JSON string weer te geven, of in Laravel return response()->json($user).

Kan Symfony Serializer klassen gebruiken die door deze tool zijn gegenereerd?

Ja. Symfony Serializer leest standaard gegevens in array-stijl, goed compatibel met klassen gegenereerd in ArrayObject stijl. Met $serializer->serialize($user, 'json') van SerializerInterface kan direct worden geserialiseerd; bij deserialisatie met deserialize() heeft de klasse openbare eigenschappen of getter nodig. Deze tool genereert stijl openbare eigenschappen + toewijzing via constructor, kan direct worden gebruikt met PropertyNormalizer van Symfony Serializer.

Wat te doen als JSON formaatfouten heeft?

De tool detecteert automatisch JSON geldigheid, bij fouten wordt rode foutwaarschuwing rechts weergegeven en knop 'JSON repareren' geleverd. Bij klikken kunnen veelvoorkomende fouten automatisch worden gerepareerd: ① overbodige laatste komma's; ② enkele aanhalingstekens vervangen door dubbele aanhalingstekens; ③ aanhalingstekens aanvullen voor sleutels zonder aanhalingstekens; ④ verwijderen van opmerkingen. Na succesvolle reparatie kan direct worden geconverteerd om PHP klassen te genereren.

Worden gegevens geüpload naar server? Is het privé en veilig?

Volledige lokale uitvoering in browser. Alle JSON analyse, PHP klasse generatie, ZIP pakketvorming vinden plaats in uw browser via JavaScript (quicktype-core + JSZip), ingevoerde JSON gegevens en gegenereerde PHP code worden naar geen enkele server geüpload, noch opgeslagen of in cache geplaatst in de cloud. Gevoelige JSON met interne interface velden, niet uitgebrachte bedrijfsstructuren, niet-openbare API antwoorden kan veilig worden gebruikt, gewist bij pagina sluiting.

Zal het genereren van een grote JSON van 10.000 regels vertraging veroorzaken?

Tool heeft geen expliciete regellimiet, maar analyse en weergave van zeer grote JSON door browser zullen langzamer zijn. Aanbevelingen: ① JSON opsplitsen en in batches converteren; ② concentreren op één nestniveau tegelijk; ③ als u 100+ klassen in batches moet genereren, raden we aan direct PHP model plugins van IDE te gebruiken of een eenvoudig quicktype CLI script te schrijven.

Ondersteunen gegenereerde PHP klassen versies vóór PHP 7.4?

Niet volledig. Klassen gegenereerd door deze tool gebruiken standaard typed properties van PHP 7.4+ (bijv. public int $id). Als uw project nog PHP 7.0~7.3 is, zullen typedeclaraties compatibiliteitsproblemen veroorzaken. Aanbevelingen: ① project upgraden naar PHP 8.1+ (aanbevolen, betere prestaties en typesysteem); ② of typedeclaraties in batches verwijderen in IDE na generatie (Find & Replace `public int ` → `public `); ③ of PHP 7.4 compatibele modus gebruiken (PHP 7.4 is basislijn van deze tool).

Probleemoplossing

Toont 'Voer JSON gegevens in' of rechts leeg

Invoergebied links is leeg of bevat alleen witruimte. Zorg ervoor dat u geldige JSON inhoud hebt geplakt, of klik op 'Sample' om Chinees voorbeeld te laden, of klik op 'Upload' om .json / .txt bestanden te selecteren.

Toont 'Unexpected token ... in JSON at position N'

Ongeldig JSON-formaat. Veelvoorkomende oorzaken: ① extra komma aan het einde (bijv. {"a":1,}); ② enkele aanhalingstekens gebruikt in plaats van dubbele aanhalingstekens; ③ JS-objectnotatie (bijv. {key: value}) in plaats van JSON (bijv. {"key": "value"}). Klik op de knop 'JSON repareren' om sommige fouten automatisch te corrigeren.

Gegenereerde code fout in PHP 7.x project met 'Typed property must not be accessed before initialization'

Klassen die door deze tool worden gegenereerd, gebruiken standaard PHP 7.4+ getypte eigenschappen (bijv. public int $id). Als uw project nog steeds PHP 7.0~7.3 gebruikt, veroorzaken typedeclaraties compatibiliteitsproblemen. Oplossingen: ① upgrade het project naar PHP 8.1+ (aanbevolen, betere prestaties en typesysteem); ② verwijder typedeclaraties in batch in de IDE (Zoeken & Vervangen `public int ` → `public `); ③ schakel de optie 'PHP 7.4 getypte eigenschappen' uit (alleen effectief voor sommige codestijlen).

PHP 8.1 readonly class fout 'Cannot modify readonly property'

Eigenschappen gegenereerd in readonly class-stijl kunnen na constructie niet worden gewijzigd. Als u $user->name = 'Bob' probeert, treedt er een fout op. Oplossingen: ① schakel over naar ArrayObject- of stdClass-stijl (eigenschappen wijzigbaar); ② of maak een nieuwe instantie met new User(...) in plaats van te wijzigen.

Kan Illuminate\Contracts\Support\Jsonable niet vinden in Laravel-project

De Laravel-integratiestijl vereist de laravel/framework-afhankelijkheid. Zorg ervoor dat in composer.json staat: "require": { "php": "^8.1", "laravel/framework": "^11.0" }. Voer vervolgens composer update uit om afhankelijkheden te installeren. Als u Laravel niet gebruikt, kies dan de ArrayObject- of stdClass-stijl.

Symfony Serializer deserialisatie mislukt 'Cannot denormalize object'

Veelvoorkomende oorzaken: ① gegenereerde klasse heeft geen openbare eigenschappen of gettermethoden (Symfony Serializer gebruikt standaard PropertyNormalizer); ② klasse heeft geen constructor zonder parameters maar heeft verplichte parameters. Oplossingen: ① bevestig dat deze tool openbare eigenschappen heeft gegenereerd; ② bouw het object handmatig via de statische methode fromArray() en geef het vervolgens door aan Serializer.

Geneste objectklasnaam niet zoals verwacht (bijv. categories benoemd als Categori)

De tool gebruikt de naamgevingsregel 'laatste s verwijderen + hoofdletter' voor objecten in arrays; voor onregelmatige meervouden zoals categories is dit niet nauwkeurig. Aanbevelingen: ① wijzig de bron-JSON-sleutel in enkelvoud (bijv. categories → category); ② of gebruik na generatie Naam wijzigen in de IDE om de klasse te hernoemen (alle verwijzingen tegelijk wijzigen).

Mapstructuur van gedownloade ZIP onjuist na extractie

Mappen binnen de ZIP worden georganiseerd volgens de namespace-instelling (standaard App/Models/). Bij onjuiste positie na extractie: ① wijzig de namespace-naam (bijv. naar App\Dto) en download opnieuw; ② specificeer extractiemap met unzip -d src/; ③ of direct in IDE Bestand → Gehele geëxtraheerde map openen.

Gegenereerde klassen worden niet automatisch geladen

Composer-projecten vereisen PSR-4 autoload mapping configuratie in composer.json, bijvoorbeeld: "autoload": { "psr-4": { "App\\": "src/" } }. Voer vervolgens composer dump-autoload uit; Composer laadt automatisch klassebestanden via namespace-naar-map mapping.

Veldnaam gewijzigd na conversie snake_case naar camelCase

'Converteer naar camelCase' wijzigt PHP-eigenschapnamen (bijv. user_name → userName), maar de retourarray-sleutels in de jsonSerialize()-methode behouden de originele snake_case; de JSON gegenereerd door json_encode() heeft nog steeds de originele veldnamen. Dus om toegang te krijgen tot de PHP-eigenschap gebruikt u $user->userName, de JSON-uitvoer is nog steeds {"user_name": "..."}. Als u ook camelCase-toegang wilt tijdens deserialisatie, moet u de sleutels in de retourarray van jsonSerialize() wijzigen in camelCase.

Pagina vertraagt bij generatie van 100+ geneste klassen

De tool heeft geen expliciete limiet op het aantal klassen, maar de browserweergaveprestaties voor extreem grote DOM nemen aanzienlijk af. Aanbevelingen: ① verdeel JSON in meerdere onafhankelijke modules en converteer afzonderlijk; ② of gebruik direct de geïntegreerde codegeneratietools in de IDE (bijv. PhpStorms JSON to PHP-plug-in); ③ het wordt aanbevolen dat nestniveaus niet meer dan 6 lagen bedragen, anders raden we aan de JSON-structuur te herstructureren.

Array is numeriek type maar genereert array<int> in plaats van array<float>

De tool leidt het type af op basis van het eerste element van de array (bijv. [1, 2, 3] leidt int af, [1.5, 2.5] leidt float af). Als u gehele getallen en floats mengt (bijv. [1, 2.5]), zal de tool afleiden op basis van het eerste element. Oplossingen: ① voeg ten minste één voorbeeld-float-element toe aan de bron-JSON (bijv. [0.0, 1.5]); ② of pas het type handmatig aan in de PHPDoc-annotatie na generatie.

Nullwaarde-veld gegenereerd als ?mixed-type in plaats van ?string

JSON-nullwaarden worden standaard door de tool afgeleid als ?mixed-type (omdat het werkelijke type niet kan worden bepaald). Dit is een veilige praktijk om beoordelingsfouten te voorkomen. Als het type bekend is, geef dit veld een voorbeeldwaarde in de bron-JSON (bijv. "field": "" leidt string af), wijzig na generatie het type in ?string.

Na composer dump-autoload wordt klasse nog steeds niet automatisch geladen

Mogelijke oorzaken: ① namespace komt niet overeen met map (bijv. namespace App\Models maar bestand in src/Dto/); ② de psr-4-mapping van composer.json is verkeerd geschreven (bijv. "App\\": "src/Dto/" zou "App\\Dto\\": "src/Dto/" moeten zijn). Oplossingen: controleer dat de namespace van elk .php-bestand strikt overeenkomt met het mappad (namespace-segmenten moeten gelijk zijn aan mapsegmenten, hoofdlettergevoelig).

PHPStan meldt 'Property does not have default value'

Gegenereerde getypte eigenschappen hebben geen standaardwaarden; PHPStan beschouwt ze in de --level=8-modus als mogelijk niet geïnitialiseerd. Oplossingen: ① schakel strikte regels van PHPStan uit; ② wijs lege waarden toe in de constructor (bijv. $this->tags = []); ③ gebruik de readonly class-stijl (onmiddellijk toegewezen na constructorpromotie).

Symfony Serializer objectarray-deserialisatie mislukt

Voor objectarrays zoals [{...},{...}] heeft PropertyNormalizer elementtypehints nodig. Oplossingen: ① specificeer expliciet het type array<User> in PHPDoc; ② of omwikkel met ArrayCollection ($users = new ArrayCollection()).

Chinese sleutels genereren PHP-eigenschapnamen met speciale tekens

Wanneer de bron-JSON Chinese sleutels bevat (bijv. "姓名": "Alice"), genereert de tool een eigenschap public string $姓名; de IDE kan melden dat de naamgeving niet standaard is, maar er treedt geen fout op. Aanbevelingen: ① wijzig JSON-sleutels in het Engels (meer in overeenstemming met de PHP PSR-1-naamgevingsconventie); ② bij het behouden van Chinees zorg ervoor dat de codering van het PHP-bestand UTF-8 is (PHP is standaard UTF-8).

ArrayObject-stijl $obj['key'] vs $obj->key uitvoervolgorde inconsistent

Array-toegang in ArrayObject-stijl retourneert in eigenschapsdeclaratievolgorde, objecttoegang retourneert in retourarray-volgorde in de jsonSerialize()-methode. Als de twee volgorden inconsistent zijn, zal de uitvoer van echo json_encode() inconsistent zijn met var_dump($obj). Aanbeveling: houd de retourvolgorde van jsonSerialize() consistent met de volgorde van de constructorparameters.

Numerieke ID in WebHook-callback-JSON overschrijdt PHP_INT_MAX

PHP's int op 64-bits systemen is een 64-bits geheel getal met teken (maximale waarde 9223372036854775807); als de numerieke ID in JSON dit bereik overschrijdt (bijv. Twitter-sneeuwvlok-ID's), wordt deze afgekapt. Oplossingen: ① ontvang de ID als stringtype ("id": "1234567890123456789"); ② parse met de JSON_BIGINT_AS_STRING-vlag.

Woordenlijst

namespace
Naamruimte mechanisme geïntroduceerd in PHP 5.3+ om klassenaamconflicten te voorkomen. Deze tool genereert automatisch volgens door gebruiker geconfigureerde namespace en organiseert in ZIP per map App/Models/.
class
Sjabloon die objecten definieert in PHP. Deze tool genereert standaard PHP class, direct instantieerbaar via new User(...).
ArrayObject
Klasse in PHP's standaard SPL bibliotheek die interfaces zoals ArrayAccess implementeert. Klassen gegenereerd in ArrayObject stijl door deze tool erven van \ArrayObject, ondersteunen dubbele array en object toegangsstijl.
stdClass
Ingebouwde generieke objectklasse van PHP; json_decode($json, false) retourneert dit type standaard. Klassen gegenereerd in stdClass stijl door deze tool erven van \stdClass, ondersteunen alleen object-stijl toegang.
typed properties
Eigenschapstypedeclaraties geïntroduceerd in PHP 7.4+ (bijv. public int $id). Eigenschappen gegenereerd door deze tool hebben standaard typedeclaraties; IDE en statische analysetools kunnen direct typecontrole doen.
readonly class
Alleen-lezen klasse geïntroduceerd in PHP 8.1+; alle eigenschappen in de klasse zijn automatisch readonly, niet wijzigbaar na constructie. Deze tool genereert final readonly class in readonly stijl, geschikt voor onveranderlijke DTO scenario's.
JsonSerializable
Interface geïntroduceerd in PHP 5.4+; objecten die deze interface implementeren roepen automatisch methode jsonSerialize() aan tijdens json_encode(). Alle klassen van deze tool implementeren automatisch deze interface.
Jsonable (Laravel)
Contract interface van Laravel framework; na implementatie kan object toJson() aanroepen om JSON weer te geven. Laravel integratie stijl van deze tool implementeert automatisch deze interface.
Arrayable (Laravel)
Contract interface van Laravel framework; na implementatie kan object toArray() aanroepen om array weer te geven. Laravel integratie stijl van deze tool implementeert automatisch deze interface.
Composer
Officieel afhankelijkheidsbeheer hulpmiddel van PHP. Bij gebruik van door deze tool gegenereerde code is het nodig om PSR-4 autoload te configureren in composer.json (bijv. App\\: src/).
PSR-4
Autoload standaard gespecificeerd door PHP-FIG, die klassebestanden laadt via namespace naar map mapping. ZIP-pakket gegenereerd door deze tool is georganiseerd per namespace pad, voldoet aan PSR-4 standaard.
Symfony Serializer
Serialisatie framework van Symfony component. Klassen gegenereerd in ArrayObject stijl door deze tool kunnen samenwerken met PropertyNormalizer van Symfony Serializer voor diepe serialisatie en deserialisatie.
Eloquent API Resource
API resource klasse van Laravel Eloquent, gebruikt voor het formatteren van API antwoorden. Klassen gegenereerd in Laravel integratie stijl door deze tool kunnen direct worden gebruikt als API Resource basisklassen.
composer.json
Configuratiebestand van Composer project. Na plaatsen van door deze tool gegenereerde code in src map, is het nodig om autoload sectie in composer.json te configureren en composer dump-autoload uit te voeren.
json_encode / json_decode
Ingebouwde JSON serialisatie en deserialisatie functies van PHP. Nadat klassen gegenereerd door deze tool JsonSerializable implementeren, roept json_encode() automatisch methode jsonSerialize() aan.
PHPUnit DataProvider
Gegevensleverancier mechanisme van PHP testframework PHPUnit. PHP klassen gegenereerd door deze tool kunnen als DataProvider in testcase worden geïnjecteerd, verbeteren efficiëntie van het schrijven van tests met IDE autocompletion.
PHPStan
Statische analysetool voor PHP, kan typecontrole, foutdetectie op code doen. Klassen gegenereerd door deze tool, met typed properties, kunnen eigenschapstypen volledig laten afleiden door PHPStan in --level=8 modus.
Psalm
Nog een statische analysetool voor PHP, open-source van Vimeo. Klassen gegenereerd door deze tool kunnen met Psalms PropertyTypeProvider sterke typevalidatie doen.
Doctrine
Set van ORM en DBAL tools in PHP ecosysteem. PHP klassen gegenereerd door deze tool kunnen dienen als skelet voor Doctrine Entity, dan handmatig annotaties zoals #[ORM\Column] toevoegen.
php -l
Syntaxcontrole instructie in PHP opdrachtregel. Klassen gegenereerd door deze tool kunnen eerst php -l User.php uitvoeren voor syntaxvalidatie voor require in project.
Composer dump-autoload
Opdracht om Composer autoload index te laten regenereren. Na plaatsen van klassen gegenereerd door deze tool in src map, moet composer dump-autoload worden uitgevoerd om te worden herkend door PSR-4 autoload.
JSON_THROW_ON_ERROR
Flag voor foutafhandeling van json_decode() in PHP 7.3+; bij activering gooit mislukte JSON analyse JsonException. Laravel voorbeeld van deze tool gebruikt rigoureuze analyse.
Hash (PHP)
Ingebouwde hash functie van PHP, veelgebruikt voor WebHook handtekeningverificatie. WebHook callback klassen gegenereerd door deze tool werken met hash_hmac() voor handtekeningverificatie.

Referentietabel JSON type naar PHP type mapping

JSON datatypen automatisch gedetecteerd door tool en referentie van bijbehorend PHP type:

JSON waardevoorbeeldDetectiemethodeGegenereerd PHP typeEigenschap standaardwaarde
nullvalue === null?mixed / ?typenull
true / falsetypeof value === 'boolean'boolfalse
42typeof value === 'number' && Number.isInteger(value)int0
3.14typeof value === 'number' && !Number.isInteger(value)float0.0
"hello"typeof value === 'string'string''
[...] (lege array)Array.isArray(value) && value.length === 0array (PHPDoc array<mixed>)[]
["a","b"]Array.isArray(value) && typeof value[0] === 'string'array (PHPDoc array<string>)[]
[1,2,3]Array.isArray(value) && typeof value[0] === 'number'array (PHPDoc array<int>)[]
[{...},{...}]Array.isArray(value) && typeof value[0] === 'object'array (PHPDoc array<Xxx>)[]
{...} (genest object)typeof value === 'object' && !Array.isArray(value)Xxx (onafhankelijke klasse)new Xxx()

Vergelijkingstabel 4 PHP codestijlen

4 door tool ondersteunde PHP klasse codestijlen; kies op basis van projectbehoeften:

CodestijlBreidt uit / ModificatorImplementeert interfaceGebruiksscenario
ArrayObject stijlextends \ArrayObjectimplements \JsonSerializableSymfony Serializer ecosysteem, vereist array-stijl toegang $obj['key'], compatibel met PHP standaardbibliotheek
stdClass stijlextends \stdClassimplements \JsonSerializableWordPress REST API, compatibel met standaardgedrag json_decode, lichtgewicht objectgegevens ondersteuning
readonly class stijlfinal readonly class (geen overerving)implements \JsonSerializablePHP 8.1+, API response DTO, onveranderlijke gegevensoverdrachtobjecten, garanderen dat gegevens niet worden gewijzigd na constructie
Laravel integratie stijlgeen overerving (standaard)implements \Jsonable, \Arrayable, \JsonSerializableLaravel Eloquent API Resource, Eloquent model laag, controller antwoordformattering

Privacy & Security

Alle JSON analyse, PHP klasse generatie, ZIP pakketvorming bewerkingen van deze JSON naar PHP tool vinden volledig lokaal plaats in uw browser via JavaScript (quicktype-core + JSZip); ingevoerde JSON gegevens en gegenereerde PHP code worden naar geen enkele server geüpload, noch opgeslagen, in cache geplaatst of opgeslagen in de cloud. Gevoelige JSON met interne interface velden, niet uitgebrachte bedrijfsstructuren, niet-openbare API antwoorden kan veilig worden gebruikt; alle gegevens worden gewist bij pagina sluiting. Deze tool gebruikt geen enkele Cookie voor gebruiker tracking, verzamelt geen e-mail of accountinformatie, integreert geen derde partij statistiekscripts; alle berekeningen vinden plaats in browserproces van het huidige apparaat. Zelfs in offline omgeving (bijv. losgekoppeld of geïsoleerd intranet) werkt het normaal, zolang paginabronnen eenmaal zijn geladen.

Authoritative References