Ho scritto più PHP di qualsiasi altro linguaggio, prima come sviluppatore di plugin WordPress e poi costruendo backend SaaS in Laravel, e c'è un piccolo compito che viene fuori costantemente e che mi sono stancato di fare a mano Hai un blob JSON, un campione di configurazione, una risposta API, un fixture, e ne hai bisogno come array PHP nel tuo codice sorgente Non decodificato in fase di esecuzione, effettivamente scritto nel file come letterale Ripetere le parentesi e le frecce a mano è lento, ed è esattamente il tipo di traduzione meccanica che uno strumento dovrebbe fare Quindi ne ho costruito uno Toolz.dev, e questa è la guida ad esso.
tl; dr: Il Toolz Convertitore di array da JSON a PHP analizza un documento JSON e lo serializza come letterale di array PHP che puoi incollare direttamente in un file. Gli oggetti JSON diventano array associativi con
=>gli array JSON diventano array indicizzati e gli scalari vengono mappati sui loro equivalenti PHP. Scegli breve[]o classicoarray()sintassi, imposta il rientro e facoltativamente avvolgi il risultato in a$variable = [...];assegnazione Funziona interamente lato client: nessun upload, nessuna iscrizione, funziona offline.
Che cosa è un convertitore da JSON a PHP array?
Un convertitore da array JSON a PHP trasforma un documento JSON nel letterale equivalente dell'array PHP. Un oggetto JSON diventa un array associativo scritto con il => operatore, un array JSON diventa un array indicizzato e i tipi scalari si mappano direttamente: una stringa JSON diventa una stringa PHP a virgolette singole true e false resta uguale, null soggiorni null, e i numeri mantengono il loro valore L'annidamento è preservato a qualsiasi profondità, quindi un oggetto JSON profondamente strutturato esce come un array PHP profondamente strutturato con la stessa forma.
Il motivo per cui questo è utile è che gli array JSON e PHP descrivono la stessa cosa, un albero di valori con chiave e ordinati, con punteggiatura diversa JSON utilizza due punti e parentesi graffe; PHP utilizza => e parentesi Tradurre tra di loro è meccanica pura, e la meccanica è soggetta a errori se eseguita a mano, specialmente con strutture nidificate in cui una singola parentesi fuori posto rompe il file Il convertitore fa la traduzione in modo deterministico e ti restituisce PHP valido.
Vale la pena di essere chiari su ciò che questo non è Non lo è json_decode. PHP legge perfettamente JSON in fase di runtime e quando i tuoi dati arrivano come stringa, decodificarli è la mossa giusta Questo strumento è per l'altro caso, quando vuoi che l'array viva nel codice sorgente stesso.
Perché non usare solo json_decode?
Questa è la prima domanda che ogni sviluppatore PHP pone, ed è quella giusta. json_decode($string, true) analizza una stringa JSON in un array PHP e il manuale PHP la documenta come il modo standard per consumare JSON Se il tuo JSON è un dato che arriva in fase di runtime, da una richiesta HTTP, una coda, un file che leggi, allora json_decode è esattamente quello che dovresti usare e nessun generatore di codice appartiene a nessuna parte vicino ad esso.
Il convertitore è per una situazione diversa: quando il JSON non è runtime dati ma qualcosa che si desidera impegnati a codificare Alcuni casi concreti dal mio proprio lavoro Un array di configurazione predefinito che viene fornito con un plugin e dovrebbe essere leggibile e modificabile nel sorgente Una tabella di ricerca, dire una mappa di codici paese ai nomi, che si incolla una volta e mai recuperare Un apparecchio di prova che deve essere un letterale in modo che il test è autonomo e non dipende dalla lettura di un file Un seme per una migrazione del database Un esempio nella documentazione che deve essere copia-incollabile PHP piuttosto che JSON.
In tutti questi, decodificare una stringa JSON su ogni richiesta sarebbe uno spreco e nasconderebbe i dati dietro una stringa letterale, dove il tuo editor non può piegarla, la tua linter non può controllarla e un recensore non può leggerla come PHP. Scrivere l'array nella sorgente risolve che Il convertitore è il modo più veloce per passare da un campione JSON a quel letterale.
Ecco la decisione in una tabella.
| situazione | maneggiare | perché |
|---|---|---|
| JSON arriva in runtime come dati | json_decode($json, true) |
L'analisi è il lavoro; mantenerlo dinamico |
| JSON è configurazione, dispositivi, semi, esempi | Convertitore di array da JSON a PHP | Impegnare un letterale leggibile alla fonte |
| Hai bisogno di JSON di nuovo fuori da un valore PHP | json_encode($array) |
La direzione inversa |
Hai un PHP serialize() legare con uno |
strumento unserialize | Questo è un formato completamente diverso |
Qual è la differenza tra breve [] e array() sintassi?
Producono array identici; differiscono solo le parentesi La sintassi breve utilizza [ e ] ed è disponibile da PHP 5.4, che ora è storia antica, quindi per qualsiasi sintassi breve moderna della base di codice è quella predefinita e quella a cui tengo Il classico array() form funziona in ogni versione di PHP mai rilasciata, che è l'unica ragione per sceglierlo ancora: stai prendendo di mira un runtime più vecchio di PHP 5.4 o una base di codice la cui guida di stile impone la forma lunga.
Lo strumento ti consente di passare da uno all'altro senza re-incollare il tuo JSON, quindi se stai contribuendo a un progetto più vecchio puoi abbinare il suo stile house in un clic Il mio consiglio per qualsiasi cosa nuova è la sintassi breve e PSR-12, il moderno stile di codifica PHP, è scritto attorno ad esso.
Come vengono gestiti gli archi e i personaggi speciali?
Questa è la parte che morde le persone che scrivono il proprio convertitore rapido, quindi vale la pena spiegarlo Lo strumento emette stringhe come letterali PHP a virgolette singole All'interno di virgolette singole, PHP tratta quasi ogni carattere letteralmente; gli unici due che sono speciali sono la barra rovesciata e la singola citazione stessa Quindi il convertitore sfugge esattamente a quei due, una barra rovesciata diventa due barre rovesciate e una singola virgoletta ottiene una barra rovesciata precedente, e lascia tutto il resto da solo.
Quello ha una piacevole conseguenza Una newline all'interno di una stringa JSON arriva attraverso come una vera e propria newline all'interno della stringa PHP a virgolette singole, che è valida e preserva esattamente il carattere Non si ottiene il mangling che si farebbe se lo strumento provasse ingenuamente ad applicare sequenze di escape a virgolette doppie Una stringa JSON come O'Brien diventa 'O\'Brien'e un percorso Windows come C:\Users diventa 'C:\\Users', entrambi sono PHP corretti Se hai mai eseguito il debug di un file di configurazione in cui un apostrofo in un valore ha interrotto silenziosamente la sintassi, apprezzerai che questo viene gestito per te.
Come si usa il convertitore?
Il flusso è di quattro passi Incolla un oggetto o un array JSON nella casella di input; se vuoi vedere prima la forma dell'output, carica il campione Scegli la sintassi dell'array, breve [] oppure array(). Impostare il rientro su 2 spazi, 4 spazi o una scheda, per corrispondere al progetto e, facoltativamente, digitare un nome di variabile per avvolgere l'output come $config = [...]; con un punto e virgola finale, pronto per essere inserito in un file. Quindi fare clic su Converti e copiare il risultato.
Se il JSON non è valido, lo strumento segnala il proprio messaggio di errore parser' piuttosto che fallire silenziosamente, quindi una virgola finale vagante o una chiave non quotata è veloce da trovare E poiché tutto viene eseguito nel browser, è possibile incollare una risposta API reale o una configurazione privata senza che lasci la macchina, il che conta quando i valori non sono qualcosa che invieresti a un server casuale Quel modello lato client è lo stesso dietro il resto del sito, descritto nel strumenti online per la privacy dei dati guida.
Come si adatta questo con gli altri strumenti JSON?
Il convertitore da array JSON a PHP è un membro di una piccola famiglia di trasformatori JSON sul sito e condividono lo stesso nucleo di analisi Quando si desidera ordinare prima il JSON, il Formattatore JSON lo indent e convaliderà Quando hai bisogno degli stessi dati di un'interfaccia TypeScript invece di PHP, il Convertitore da JSON a TypeScript deduce i tipi Quando la destinazione è un foglio di calcolo o un caricamento del database, il Convertitore da JSON a CSV lo appiattisce in file, e il Convertitore JSON a YAML gestisce i formati di configurazione che preferiscono YAML.
Nello specifico, per gli sviluppatori PHP, il vicino che vale la pena conoscere è il strumento unserialize, che gestisce PHP's proprio serialize() formato. quella è una bestia diversa da JSON, un formato di filo specifico per PHP che trovi nei dati di sessione e in alcuni valori delle opzioni di WordPress, e i due strumenti coprono i due modi in cui i dati strutturati vengono comunemente visualizzati in un progetto PHP. Se lavori attraverso lo stack, il Toolkit per sviluppatori web la carrellata mostra come questi pezzi si incastrano insieme e il Strumenti di produttività per sviluppatori la guida copre il set più ampio.
Un esempio funzionante da un workflow WordPress e Laravel
Lasciate che renda questo concreto con i due punti in cui lo colpisco di più In un plugin WordPress, spedisci spesso un array di impostazioni predefinito che semina la tabella delle opzioni all'attivazione Durante lo sviluppo quella struttura inizia frequentemente la vita come un campione JSON, magari esportato da un'interfaccia utente delle impostazioni o abbozzato durante la progettazione dello schema Piuttosto che tradurlo a mano, incollo il JSON nel convertitore, scelgo una sintassi breve e un rientro a 4 spazi per abbinarlo allo stile, al tipo del plugin's defaults come nome della variabile, e torna indietro $defaults = [ ... ]; che cade dritto in un get_default_settings() funzione I tasti rimangono leggibili, un recensore può vedere la forma nel diff e non c'è decodifica runtime su ogni caricamento di pagina.
Il lato Laravel è simile ma si presenta in config e seeder Un file config restituisce un grande array associativo, e ho regolarmente una versione JSON di qualche mappatura di terze parti, una tabella delle valute, un insieme di flag di funzionalità, un elenco di piani, che deve diventare quell'array Il convertitore trasforma il JSON nel letterale, lo avvolgo nel return [ ... ]; il file di configurazione si aspetta e il valore è ora PHP di prima classe con cui il framework viene memorizzato nella cache config:cache invece di essere analizzato da una stringa Per i seeder di database funziona lo stesso trucco: incolla il JSON delle righe di esempio, ottieni un array e invialo a insert().
Il motivo per cui mi appoggio a un convertitore piuttosto che json_decode(file_get_contents(...)) in questi punti non c'è pigrizia, è che l'impegno letterale rende i dati parte della revisione del codice, parte dell'analisi statica e parte della cronologia delle versioni in una forma che un essere umano legge Un file JSON seduto accanto al codice è invisibile a una linter PHP; un array nella sorgente no. Quando i dati sono una parte fissa dell'applicazione piuttosto che un input ad essa, quella visibilità vale la conversione una tantum.
C'è anche un angolo di documentazione che ho sottovalutato fino a quando ho iniziato a scrivere più guide Quando si desidera mostrare un esempio PHP in un README o una knowledge base, un blob JSON non è PHP incollabile in copia e i lettori che lo afferrano hanno colpito un errore di sintassi Eseguendolo prima attraverso il convertitore significa che l'esempio nei tuoi doc è PHP reale e eseguibile che un lettore può cadere in un file e vedere il lavoro, che è una piccola cosa che solleva silenziosamente la qualità della documentazione.
Quali sono i limiti che vale la pena conoscere?
Alcuni bordi onesti Il più grande è la precisione numerica, ed è una proprietà del parsing JSON in generale piuttosto che di questo strumento nello specifico Il convertitore analizza il tuo JSON con il browser's JSON parser, che rappresenta i numeri come float a doppia precisione Interi oltre circa 2 alla 53a potenza, cifre da sedici, perdere precisione in fase di analisi, prima che lo strumento li veda Se stai convertendo JSON con ID interi molto grandi, trattali come stringhe nel JSON per mantenerli esatti Ogni convertitore basato su JSON.parse condivide questo limite; uno strumento che affermava il contrario mentirebbe.
In secondo luogo, la coercizione della chiave dell'array PHP. PHP converte silenziosamente una chiave stringa che assomiglia a un numero intero in una chiave intera reale. Il convertitore scrive le chiavi oggetto come stringhe citate, il che è esplicito e corretto, ma tieni presente che PHP stesso può trattare '0' e 0 come la stessa chiave in fase di esecuzione Questo è importante solo per gli oggetti i cui tasti sono stringhe numeriche, il che è raro, e il comportamento è PHP's, non lo strumento's.
Terzo, contenitori vuoti Un oggetto JSON vuoto {} e un array JSON vuoto [] entrambi diventano [] in PHP, perché un array PHP non è in grado di distinguere i due. Questa è una vera ambiguità nella mappatura, non una scorciatoia, e non esiste un costrutto PHP che preservi la differenza.
Infine, l'output è un valore, non un'istruzione, a meno che non si fornisca un nome di variabile Senza uno si ottiene un letterale nudo, che è ciò che si desidera quando si incolla in un'espressione esistente; con uno si ottiene un'assegnazione completa che termina con un punto e virgola Il nome della variabile è convalidato, quindi un identificatore non valido viene rifiutato con un messaggio chiaro anziché produrre PHP rotto.
Domande frequenti
Che cosa è un convertitore da JSON a PHP array? Un convertitore da array JSON a PHP trasforma un documento JSON nel letterale equivalente dell'array PHP. Gli oggetti JSON diventano array associativi con l'operatore => gli array JSON diventano array indicizzati e i tipi scalari vengono mappati sulle loro controparti PHP in modo da poter incollare il risultato direttamente in uno script.
Come faccio a convertire JSON in un array PHP? Incolla il tuo JSON nella casella di input, scegli una sintassi breve [] o array () e uno stile di indentazione, quindi fai clic su Converti Lo strumento crea un array PHP letterale che puoi copiare, facoltativamente racchiuso in un'assegnazione di variabile se inserisci un nome di variabile.
Qual è la differenza tra sintassi corta [] e array ()? Producono array identici; differiscono solo le parentesi La sintassi breve utilizza [] ed è disponibile da PHP 5.4, mentre array () è la forma precedente che funziona in ogni versione PHP Scegli array () solo se devi supportare un runtime precedente a PHP 5.4.
Questo sostituisce json_decode in PHP? No. json_decode ($json, true) analizza una stringa JSON in un array in fase di esecuzione, che è proprio quando il JSON arriva come dati Questo strumento scrive invece l'array nel codice sorgente, che si adatta a configurazioni, fixture, dati seed ed esempi che dovrebbero vivere nel file anziché essere decodificati su ogni richiesta.
Come vengono mappati gli oggetti e gli array JSON? Un oggetto JSON diventa un array associativo PHP dove ogni chiave è una stringa a virgolette singole seguita da => e il suo valore Un array JSON diventa un array PHP indicizzato con gli elementi in ordine L'annidamento viene conservato a qualsiasi profondità esattamente come nella sorgente.
Come vengono gestiti gli archi e i personaggi speciali? Le stringhe vengono emesse come letterali PHP a virgolette singole, quindi solo una barra rovesciata e una singola virgoletta vengono sfuggite con una barra rovesciata precedente. Ogni altro carattere, inclusa una nuova riga reale, viene mantenuto alla lettera, il che corrisponde al modo in cui PHP tratta le stringhe a virgolette singole.
Il mio JSON è stato caricato da qualche parte? No. La conversione avviene interamente nel browser utilizzando JavaScript sul dispositivo Il tuo JSON non viene mai caricato, registrato o archiviato e lo strumento continua a funzionare con la rete disconnessa una volta caricata la pagina.
Il convertitore da array JSON a PHP è gratuito? Sì. è completamente gratuito senza iscrizione, filigrana e senza limite di utilizzo Converti in array PHP tutti i documenti JSON necessari per progetti personali o commerciali.



