Ir para o conteúdo

JSON para classe PHP

Converta um exemplo JSON numa classe PHP tipada com construtor, fromArray e toArray.

Entrada
Saída

JSON para classe PHP

Cole um objeto ou lista JSON e esta ferramenta deduz um tipo para cada campo, depois gera uma classe PHP pronta para usar: propriedades tipadas, construtor, método de fábrica estático fromArray() e método toArray() para converter o objeto de volta numa lista simples. Objetos aninhados tornam-se suas próprias classes automaticamente, e formas idênticas são reutilizadas em vez de duplicadas, portanto um payload com várias secções similarmente estruturadas ainda produz um ficheiro compacto.

O nome da classe e o nome do namespace nomeiam a classe raiz e, opcionalmente, envolvem-na num namespace PHP. O construtor promovido PHP 8 escreve as propriedades directamente na assinatura do construtor em vez de as declarar separadamente — desative-o para um construtor clássico explícito. Gerar getters e setters adiciona métodos acessores (isX() para booleanos, getX()/setX() caso contrário) em vez de expor propriedades directamente. declare(strict_types=1) adiciona o cabeçalho de tipo estrito do PHP, e comentários docblock anotam cada propriedade com o seu tipo deduzido. Campos array decidem se uma lista é tipada como um array simples ou documentada com o seu tipo de elemento, como string[], uma vez que o PHP não tem genéricos para isso na dica de tipo.

Um campo visto como nulo, ou em falta de alguns elementos de uma lista de objetos, é gerado como anulável — com uma verificação segura isset() quando precisa construir um objeto aninhado ou mapear uma lista, e um padrão null-coalescing caso contrário. Uma chave que colide com uma palavra-chave do PHP ou começa com um dígito é renomeada para um nome de propriedade válido, e cada propriedade gerada mantém a chave JSON original como sua chave de array em fromArray() e toArray().

Tudo funciona localmente no seu navegador — o JSON que cola, que pode incluir respostas API reais ou dados de configuração, nunca é carregado em lugar nenhum. Copie a classe gerada, transfira-a como ficheiro .txt, ou envie o resultado de volta para a entrada para refiná-lo ainda mais.

FAQ

Que versão do PHP o código gerado tem como alvo?
PHP 8.0 ou posterior, uma vez que as propriedades do construtor promovido e o tipo mixed são características do PHP 8. Desative a opção construtor-promovido se precisar de saída compatível com PHP 7.
Como os objetos aninhados são tratados?
Cada forma de objeto distinta torna-se sua própria classe, com seus próprios métodos fromArray() e toArray(). Dois campos com uma forma idêntica reutilizam a mesma classe gerada em vez de duplicá-la.
O que acontece a um campo que é algumas vezes nulo ou em falta?
É gerado como uma propriedade tipada e anulável. Os escalares padrão para nulo com o operador null-coalescing; objetos aninhados e listas de objetos usam uma verificação isset() para que fromArray() nunca chame um método em dados em falta.
Posso gerar várias classes a partir de um único exemplo JSON?
Sim. Cada objeto aninhado na amostra produz sua própria classe no mesmo ficheiro, em ordem de dependência, para que o ficheiro esteja pronto para usar.
O meu JSON é carregado em algum lugar?
Não. A geração de classe funciona inteiramente no seu navegador — o seu JSON nunca deixa o seu dispositivo.