Eu escrevi mais PHP do que qualquer outra linguagem, primeiro como um desenvolvedor de plugins WordPress e mais tarde construindo backends SaaS em Laravel, e há uma pequena tarefa que surge constantemente e que EU me cansei de fazer à mão Você tem um blob JSON, uma amostra de configuração, uma resposta de API, um dispositivo elétrico, e você precisa dele como uma matriz PHP em seu código-fonte Não decodificado em tempo de execução, na verdade escrito no arquivo como um literal, A reciclagem dos colchetes e setas à mão é lenta, e é exatamente o tipo de tradução mecânica que uma ferramenta deve fazer Então EU construí um em Toolz.dev, e este é o guia para isso.
tl;dr: O Toolz Conversor de matriz JSON para PHP analisa um documento JSON e o serializa como um array PHP literal que você pode colar diretamente em um arquivo. Objetos JSON tornam-se arrays associativos com
=>, matrizes JSON tornam-se matrizes indexadas e os escalares mapeiam para seus equivalentes PHP. Escolha curto[]ou clássicoarray()sintaxe, defina o recuo e, opcionalmente, envolva o resultado em a$variable = [...];atribuição. Ele é executado inteiramente do lado do cliente: sem upload, sem inscrição, funciona offline.
O que é um conversor de matriz JSON para PHP?
Um conversor de matriz JSON para PHP transforma um documento JSON no literal de matriz PHP equivalente Um objeto JSON torna-se uma matriz associativa escrita com o => operador, uma matriz JSON torna-se uma matriz indexada, e os tipos escalares mapeiam diretamente: uma string JSON torna-se uma string PHP de citação única, true e false fica na mesma, null fica null, e os números mantêm seu valor O aninhamento é preservado a qualquer profundidade, então um objeto JSON profundamente estruturado sai como uma matriz PHP profundamente estruturada com a mesma forma.
A razão pela qual isso é útil é que as matrizes JSON e PHP descrevem a mesma coisa, uma árvore de valores chaveados e ordenados, com pontuação diferente JSON usa dois pontos e chaves; PHP usa => e colchetes A tradução entre eles é pura mecânica, e a mecânica é propensa a erros quando feita à mão, especialmente com estruturas aninhadas onde um único colchete extraviado quebra o arquivo O conversor faz a tradução de forma determinística e devolve PHP válido.
Vale a pena ser claro sobre o que não é. Não é json_decode. PHP lê JSON em tempo de execução perfeitamente bem, e quando seus dados chegam como uma string, decodificá-lo é o movimento certo Esta ferramenta é para o outro caso, quando você quer que a matriz para viver no próprio código-fonte.
Por que não usar apenas json_decode?
Esta é a primeira pergunta que todo desenvolvedor de PHP faz e é a certa. json_decode($string, true) analisa uma string JSON em uma matriz PHP, e o manual PHP documenta-a como a maneira padrão de consumir JSON Se o seu JSON são dados que chegam em tempo de execução, a partir de uma solicitação HTTP, uma fila, um arquivo que você leu, então json_decode é exatamente o que você deve usar e nenhum gerador de código pertence perto dele.
O conversor é para uma situação diferente: quando o JSON não é dados de tempo de execução, mas algo que você deseja que seja comprometido com o código Alguns casos concretos do meu próprio trabalho Uma matriz de configuração padrão que é fornecida com um plugin e deve ser legível e editável na fonte Uma tabela de pesquisa, digamos um mapa de códigos de país para nomes, que você cola uma vez e nunca busca Um dispositivo elétrico de teste que precisa ser literal para que o teste seja independente e não dependa da leitura de um arquivo Uma semente para uma migração de banco de dados Um exemplo na documentação que tem que ser PHP copy-pasteable em vez de JSON.
Em todos esses, decodificar uma string JSON em cada solicitação seria um desperdício e ocultaria os dados por trás de uma string literal, onde seu editor não pode dobrá-la, seu linter não pode verificá-la e um revisor não pode lê-la como PHP. Escrever a matriz na fonte resolve isso O conversor é a maneira mais rápida de passar de uma amostra JSON para esse literal.
Aqui está a decisão em uma tabela.
| situação | usar | por que |
|---|---|---|
| JSON chega em tempo de execução como dados | json_decode($json, true) |
A análise é o trabalho; mantenha-o dinâmico |
| JSON é configuração, acessórios, sementes, exemplos | Conversor de matriz JSON para PHP | Confirme um literal legível na fonte |
| Você precisa de JSON de volta de um valor PHP | json_encode($array) |
A direção inversa |
Tens um PHP serialize() barbante |
ferramenta unserialize | Esse é um formato totalmente diferente |
Qual é a diferença entre short [] e array() sintaxe?
Produzem arrays idênticos; apenas os colchetes diferem A sintaxe curta usa [ e ] e está disponível desde o PHP 5.4, que agora é história antiga, então para qualquer sintaxe curta de base de código moderna é o padrão e aquele que EU alcancei O clássico array() o formulário funciona em todas as versões do PHP já lançadas, o que é o único motivo para ainda escolhê-lo: você está visando um tempo de execução mais antigo que o PHP 5.4 ou uma base de código cujo guia de estilo exige o formato longo.
A ferramenta permite alternar entre eles sem re-colar seu JSON, então se você está contribuindo para um projeto mais antigo você pode combinar seu estilo de casa em um clique Meu conselho para qualquer coisa nova é sintaxe curta, e PSR-12, o estilo de codificação PHP moderno, é escrito em torno dele.
Como são tratadas as strings e os caracteres especiais?
Esta é a parte que morde as pessoas que escrevem seu próprio conversor rápido, por isso vale a pena explicar A ferramenta emite strings como literais de aspas simples PHP Dentro de aspas simples, PHP trata quase todos os caracteres literalmente; os dois únicos que são especiais são a barra invertida e a citação única em si Então o conversor escapa exatamente esses dois, uma barra invertida se torna duas barras invertidas e uma única aspa recebe uma barra invertida anterior, e deixa tudo o mais sozinho.
Isso tem uma consequência agradável Uma nova linha dentro de uma string JSON vem através como uma nova linha real dentro da string PHP de citação única, que é válida e preserva o caractere exatamente Você não obtém a mutilação que você faria se a ferramenta ingenuamente tentasse aplicar sequências de escape de aspas duplas Uma string JSON como O'Brien torna-se 'O\'Brien'& um caminho do Windows como C:\Users torna-se 'C:\\Users', ambos os quais são PHP corretos Se você já depurou um arquivo de configuração onde um apóstrofo em um valor silenciosamente quebrou a sintaxe, você apreciará que isso seja tratado para você.
Como uso o conversor?
O fluxo é de quatro passos Cole um objeto ou matriz JSON na caixa de entrada; se você quiser ver a forma da saída primeiro, carregue a amostra Escolha a sintaxe do array, abreviadamente [] ou array(). Defina o recuo para 2 espaços, 4 espaços ou uma guia, para corresponder ao seu projeto e, opcionalmente, digite um nome de variável para encerrar a saída como $config = [...]; com um ponto e vírgula à direita, pronto para cair em um arquivo Em seguida, clique em Converter e copiar o resultado.
Se o JSON for inválido, a ferramenta reporta a mensagem de erro do próprio analisador & #39; s em vez de falhar silenciosamente, de modo que uma vírgula de fuga perdida ou uma chave não citada é rápida de encontrar E como tudo é executado no seu navegador, você pode colar uma resposta API real ou uma configuração privada sem que ela saia da sua máquina, o que importa quando os valores não são algo que você enviaria para um servidor aleatório Esse modelo do lado do cliente é o mesmo atrás do resto do site, descrito no ferramentas online de privacidade de dados guia.
Como isso se encaixa com as outras ferramentas JSON?
O conversor de matriz JSON para PHP é um membro de uma pequena família de transformadores JSON no site, e eles compartilham o mesmo núcleo de análise Quando você deseja arrumar o JSON primeiro, o formatador json irá recuá-lo e validá-lo Quando você precisar dos mesmos dados que uma interface TypeScript em vez de PHP, o Conversor JSON para TypeScript infere os tipos Quando o destino é uma planilha ou uma carga de banco de dados, o Conversor JSON para CSV achata-o em fileiras e o Conversor JSON para YAML lida com formatos de configuração que preferem YAML.
Especificamente para desenvolvedores de PHP, o vizinho que vale a pena conhecer é o ferramenta unserialize, que lida com PHP's próprios serialize() formato. Que é uma besta diferente do JSON, um formato de fio específico do PHP que você encontra nos dados da sessão e em alguns valores da opção WordPress, e as duas ferramentas cobrem as duas maneiras pelas quais os dados estruturados geralmente aparecem em um projeto PHP. Se você trabalhar em toda a pilha, o Kit de ferramentas para desenvolvedores web roundup mostra como essas peças se encaixam e o Ferramentas de produtividade do desenvolve guia cobre o conjunto mais amplo.
Um exemplo trabalhado de um fluxo de trabalho WordPress e Laravel
Deixe-me tornar isso concreto com os dois lugares que EU acertei mais Em um plugin WordPress, você geralmente envia uma matriz de configurações padrão que semeia a tabela de opções na ativação Durante o desenvolvimento que estrutura frequentemente começa a vida como uma amostra JSON, talvez exportado de uma interface de usuário de configurações ou esboçado durante a concepção do esquema Em vez de mão-traduzi-lo, EU colar o JSON no conversor, escolher sintaxe curta e recuo de 4 espaços para coincidir com o plugin & #39; s estilo, tipo defaults como nome da variável, e volte $defaults = [ ... ]; isso cai direto em um get_default_settings() função. As teclas permanecem legíveis, um revisor pode ver a forma no diff e não há decodificação de tempo de execução em cada carregamento de página.
O lado Laravel é semelhante mas aparece em config e seeders Um arquivo de config retorna uma grande matriz associativa, e EU regularmente tenho uma versão JSON de algum mapeamento de terceiros, uma tabela de moedas, um conjunto de sinalizadores de recursos, uma lista de planos, que precisa se tornar essa matriz O conversor transforma o JSON no literal, EU envolvo no return [ ... ]; o arquivo de configuração espera, e o valor agora é PHP de primeira classe com o qual a estrutura é armazenada em cache config:cache em vez de ser analisado a partir de uma string Para semeadores de banco de dados o mesmo truque funciona: colar o JSON de suas linhas de amostra, obter uma matriz, e alimentá-lo para insert().
A razão pela qual me apoio em um conversor em vez de json_decode(file_get_contents(...)) nestes spots não é preguiça, é que cometer o literal torna os dados parte da revisão de código, parte da análise estática, e parte do histórico de versão em uma forma que um humano lê Um arquivo JSON sentado ao lado do código é invisível para um linter PHP; uma matriz na fonte não é Quando os dados são uma parte fixa do aplicativo, em vez de entrada para ele, que a visibilidade vale a conversão única.
Há também um ângulo de documentação que EU subestimei até que EU comecei a escrever mais guias Quando você quer mostrar um exemplo PHP em um README ou uma base de conhecimento, um blob JSON não é PHP copy-pasteable, e leitores que agarrá-lo bateu um erro de sintaxe Executando-o através do conversor primeiro significa que o exemplo em seus docs é real, PHP runnable que um leitor pode cair em um arquivo e ver o trabalho, que é uma pequena coisa que silenciosamente aumenta a qualidade da documentação.
Quais são os limites que vale a pena conhecer?
Algumas arestas honestas A maior é a precisão numérica, e é uma propriedade da análise JSON em geral, em vez desta ferramenta especificamente O conversor analisa seu JSON com o navegador & #39; s analisador JSON, que representa números como flutuadores de precisão dupla Inteiros além de aproximadamente 2 elevado a 53°, dezesseis dígitos, perdem precisão no tempo de análise, antes que a ferramenta os veja Se você estiver convertendo JSON com IDs inteiros muito grandes, trate-os como strings no JSON para mantê-los exatos Todo conversor baseado em parse JSON compartilha esse limite; uma ferramenta que alegou o contrário estaria mentindo.
Segundo, a coerção de chave de matriz PHP. PHP converte silenciosamente uma chave de string que se parece com um número inteiro em uma chave inteira real O conversor escreve chaves de objeto como strings citadas, o que é explícito e correto, mas esteja ciente de que o próprio PHP pode tratar '0' e 0 como a mesma tecla em tempo de execução Isso só importa para objetos cujas teclas são strings numéricas, o que é raro, e o comportamento é PHP & #39; s, não a ferramenta & #39; s.
Terceiro, contentores vazios Um objecto JSON vazio {} e uma matriz JSON vazia [] ambos se tornam [] em PHP, porque uma matriz PHP não consegue distinguir os dois Isso é uma ambiguidade genuína no mapeamento, não um atalho, e não há construção PHP que preserve a diferença.
Finalmente, a saída é um valor, não uma instrução, a menos que você forneça um nome de variável Sem um você obtém um literal simples, que é o que você quer ao colar em uma expressão existente; com um você obtém uma atribuição completa terminando em ponto e vírgula O nome da variável é validado, então um identificador inválido é rejeitado com uma mensagem clara em vez de produzir PHP quebrado.
Perguntas frequentes
O que é um conversor de matriz JSON para PHP? Um conversor de matriz JSON para PHP transforma um documento JSON no literal de matriz PHP equivalente. Os objetos JSON tornam-se matrizes associativas com o => operador, matrizes JSON tornam-se matrizes indexadas e os tipos escalares mapeiam para suas contrapartes PHP para que você possa colar o resultado diretamente em um script.
Como converto JSON em uma matriz PHP? Cole seu JSON na caixa de entrada, escolha a sintaxe curta [] ou array () e um estilo de recuo e, em seguida, clique em Converter A ferramenta constrói um array PHP literal que você pode copiar, opcionalmente envolvido em uma atribuição de variável se você inserir um nome de variável.
Qual é a diferença entre sintaxe curta [] e array ()? Eles produzem matrizes idênticas; apenas os colchetes diferem A sintaxe curta usa [] e está disponível desde o PHP 5.4, enquanto array () é o formulário mais antigo que funciona em todas as versões do PHP Escolha array () somente se você precisar suportar um tempo de execução mais antigo que o PHP 5.4.
Isso substitui o json_decode no PHP? No. json_decode ($json, true) analisa uma string JSON em uma matriz em tempo de execução, que é certo quando o JSON chega como dados Esta ferramenta grava a matriz em seu código-fonte em vez disso, que se adapta a configuração, fixtures, dados de semente e exemplos que devem viver no arquivo em vez de ser decodificados em cada solicitação.
Como os objetos e arrays JSON são mapeados? Um objeto JSON torna-se uma matriz associativa PHP onde cada chave é uma cadeia de caracteres com uma única citação seguida por = & gt; e seu valor Uma matriz JSON torna-se uma matriz PHP indexada com os elementos em ordem O aninhamento é preservado a qualquer profundidade exatamente como na fonte.
Como são tratadas as strings e os caracteres especiais? Strings são emitidas como literais de aspas simples PHP, então apenas uma barra invertida e uma única aspas escapam com uma barra invertida anterior. Todos os outros caracteres, incluindo uma nova linha real, são mantidos literalmente, o que corresponde à forma como o PHP trata strings de aspas simples.
Meu JSON foi carregado em algum lugar? Não. A conversão acontece inteiramente no seu navegador usando JavaScript no seu dispositivo Seu JSON nunca é carregado, registrado ou armazenado, e a ferramenta continua a funcionar com a rede desconectada assim que a página for carregada.
O conversor de matriz JSON para PHP é gratuito? Sim. é totalmente gratuito sem inscrição, sem marca d'água e sem limite de uso. Converta tantos documentos JSON em matrizes PHP quanto necessário para projetos pessoais ou comerciais.



