JSON-muoto PHP:ssä
JSON on tiedon tallennusmuoto. Tätä muotoa käytetään usein tiedon vaihtamiseen sivustojen välillä tai palvelimen ja selaimen välillä. Tämä muoto on kompaktimpi ja yksinkertaisempi verrattuna XML:ään, siksi sitä käytetään nykyisin paljon laajemmin.
Lyhenne JSON tulee sanoista JavaScript Object Notation. Asia on niin, että JSON keksittiin alun perin JavaScript-kielellä, mutta nykyisin sitä käytetään kaikkialla.
PHP:n näkökulmasta JSON-muotoiset tiedot edustavat merkkijonoa:
<?php
$str = '
// tässä on JSON
';
?>
Itse muoto edustaa jotakin
moniulotteista rakennetta, joka koostuu
tavallisista ja assosiatiivisista taulukoista.
Taulukoiden alkioina voivat olla merkkijonot
pakollisesti lainausmerkeissä, numerot,
arvot true, false
tai null.
Katsotaan esimerkein. Tehdään taulukko numeroilla:
<?php
$str = '[1, 2, 3, 4, 5]';
?>
Tehdään taulukko merkkijonoilla:
<?php
$str = '["a", "b", "c"]';
?>
Tehdään taulukko sekasisältöisellä sisällöllä:
<?php
$str = '[1, "a", true, false, null]';
?>
Tehdään nyt assosiatiivinen taulukko. JavaScriptin termein tällaisia taulukoita kutsutaan objekteiksi. Objektit suljetaan aaltosulkeisiin, ja avaimet erotetaan arvoista kaksoispisteillä. Samalla tällaisten taulukoiden avaimina täytyy olla merkkijonoja pakollisesti lainausmerkeissä. Tehdään esimerkki objektista:
<?php
$str = '{
"a": 1,
"b": 2,
"c": 3
}';
?>
Taulukoita ja objekteja voidaan yhdistellä rakenteissa minkä tahansa sisäkkäisyystason:
<?php
$str = '{
"a": [1, 2, 3],
"b": [4, 5, 6]
}';
?>
Huomioi, että viimeisen alkion jälkeiset roikkuvat pilkut eivät ole sallittuja JSON-muodossa:
<?php
$str = '[
"a",
"b",
"c",
]'; // viimeinen pilkku on ylimääräinen
?>
Muunna seuraava PHP-rakenne JSON-merkkijonoksi:
<?php
$data = [1, 2, 3];
?>
Muunna seuraava PHP-rakenne JSON-merkkijonoksi:
<?php
$data = ['x', 'y', 'z',];
?>
Muunna seuraava PHP-rakenne JSON-merkkijonoksi:
<?php
$data = [
'x' => 'a',
'y' => 'b',
'z' => 'c',
];
?>
Muunna seuraava PHP-rakenne JSON-merkkijonoksi:
<?php
$data = [
'ru' => ['1', '2', '3'],
'en' => ['a', 'b', 'c'],
];
?>