JSON till PHP-array

Klistra in ett JSON-dokument och få en PHP-array-literal formaterad för en .php-källfil, kort array-syntax ([...]), korrekt indragning, strängar korrekt citerade, nästlade objekt som blir associativa arrayer och arrayer som förblir indexerade. Användbart för att bädda in API-fixturer i tester eller seeda konfigurationsfiler.

Så konverterar du JSON till PHP

  1. 1

    Klistra in JSON:en

    Valfri giltig JSON: objekt, arrayer, djupt nästlade.

  2. 2

    Välj syntax

    Kort `[...]` (PHP 5.4+) eller lång `array(...)` (behövs sällan nu).

  3. 3

    Välj strängcitattecken

    Enkelciterade (ingen interpolering, escapa apostrofer) eller dubbelciterade (tillåter `$`-interpolering: oftast inte vad du vill för data).

  4. 4

    Kopiera arrayen

    Klistra in i din `.php`-fil, tilldela till en `return`, eller linda i `config([...])`.

Exempel

Inmatning:

{ "app": { "name": "Hyperion", "debug": true, "hosts": ["h1.example.com", "h2.example.com"] } }

Utdata (kort syntax, enkla citattecken):

[
    'app' => [
        'name' => 'Hyperion',
        'debug' => true,
        'hosts' => [
            'h1.example.com',
            'h2.example.com',
        ],
    ],
]

Typmappning

JSON PHP
sträng sträng (enkelciterad)
heltal int
tal (decimal) float
boolesk true / false
null null
array (JSON) indexerad array
objekt (JSON) associativ array

När man ska använda associativ mot indexerad

PHP har en arraytyp med båda beteendena. JSON skiljer tydligt på objekt och array, så mappningen är:

  • {} -> associativ (['key' => value]).
  • [] -> indexerad ([value, value]).

Generatorn bevarar alltid distinktionen; att blanda de två i PHP är tillåtet men förvirrande.

PHP-specifika fallgropar

  • Numeriska strängnycklar. PHP castar "42" till heltalsnyckeln 42 i en array. Om din JSON använder numeriska strängar som nycklar och du behöver dem som strängar, bevarar inte tur-och-retur via array_combine dem.
  • Stora heltal. JSON kan hålla heltal större än PHP_INT_MAX på 32-bitars-byggen. Generatorn varnar när det kan inträffa.
  • UTF-8. PHP-strängar är bytesekvenser; generatorn matar ut UTF-8 ordagrant. Säkerställ att din .php-fil sparas som UTF-8 utan BOM.

Användningsfall

  • Konfigurationsfiler: Laravel och Symfony använder båda PHP-array-config. Att släppa in en JSON-config i leverantörsstil fungerar bra.
  • Testfixturer: PHPUnit-fixturer är renare som arrayer än som JSON-filer laddade vid runtime.
  • Seeds: databas-seeders i Laravel börjar ofta som en JSON-dump och blir PHP-arrayer.

Vanliga misstag

  • Att skicka PHP-arrayer tur och retur till JSON. json_encode behandlar en associativ array som ett objekt och en indexerad array som en array. Om du blandar dem (['key' => 'val', 0 => 'x']) får du ett objekt på vägen ut. Håll JSON-formade arrayer JSON-formade.
  • Dubbla citattecken med apostrofer. Enkelciterade PHP-strängar behöver escapat \'; dubbelciterade strängar behöver escapat \\" och variabler interpolerade av misstag om du inte är försiktig. Håll dig till enkla citattecken för data.
  • Att glömma avslutande kommatecken. PHP tillåter dem sedan PHP 7.3 och de gör diffar renare. Generatorn lägger till dem som standard.

Vanliga frågor

Kort syntax ([...]) har funnits sedan PHP 5.4 och är det idiomatiska valet för all modern kod. Lång syntax (array(...)) behövs bara för kod som måste köras på PHP 5.3 eller äldre, i princip äldre system.

Ja. Laravel-config-filer är vanliga PHP-arrayer som returneras från en fil. Klistra in generatorns utdata efter return och spara den i config/.

Enkelciterade PHP-strängar interpolerar inte variabler eller escape-sekvenser (utom \' och \\). För dataliteraler är det snabbare och säkrare. Dubbla citattecken spelar bara roll när du vill ha \n, \t eller $variable inuti strängen.

Nej, det matar ut en array-literal. Linda den själv med return, const, eller en klassegenskap efter behov. Att hålla utdatan liten håller den kombinerbar.

Relaterade verktyg

Verktyget finns på andra språk