oktatas:programozas:php:php_json
Tartalomjegyzék
PHP JSON feldolgozás
- Szerző: Sallai András
- Copyright © Sallai András, 2015, 2021
- Licenc: GNU Free Documentation License 1.3
- Web: https://szit.hu
Példa 001
- dolgozok.json
{ "dolgozok": [ { "nev": "Nagy József", "kor": "35", "fizetes": "870000" }, { "nev": "Para Lajos", "kor": "30", "fizetes": "975000" } ] }
- index.php
<?php $dolgozokJson = file_get_contents("dolgozok.json"); $dolgozokArray = json_decode($dolgozokJson, true); echo $dolgozokArray['dolgozok'][0]['nev']; echo $dolgozokArray['dolgozok'][1]['nev'];
JSON iterálás
$dolgozokIterator = new RecursiveIteratorIterator( new RecursiveArrayIterator(json_decode($dolgozokJson, TRUE)), RecursiveIteratorIterator::SELF_FIRST); foreach ($jsonIterator as $key => $val) { if(is_array($val)) { echo "$key:\n"; } else { echo "$key => $val\n"; } }
Szép kiíratás
- index.php
<?php $data['products'] = array( 'items' => [ array("id" => 1, "name" => "HDD", "price" => 69000), array("id" => 2, "name" => "CPU", "price" => 95000) ] ); header('Access-Control-Allow-Origin: *'); header('Content-Type: application/json'); echo json_encode($data, JSON_PRETTY_PRINT);
Kimenet:
{ "products": { "items": [ { "id": 1, "name": "HDD", "price": 69000 }, { "id": 2, "name": "CPU", "price": 95000 } ] } }
Az Access-Control sor a kereszthivatkozás (külön szerveren fut az API és a JavaScript) miatt kell, ha van ilyen. A * helyére a tartománynév is megadható.
header('Access-Control-Allow-Origin: https://valahol.hu');
Lekérés JavaScripttel
Általában így valósítják meg:
- app.js
let url = 'http://localhost:8000'; fetch(url) .then(res => res.json()) .then(out => console.log('JSON', out.products.items)) .catch(err => console.error(err));
Szétszedve:
- app.js
let url = 'http://localhost:8000'; var obj = fetch(url); var result = obj.then(res => res.json()); var output = result.then(out => console.log('JSON', out.products.items)); output.catch(err => console.error(err));
JSON adatok összeállítása
PHP kód:
$data['products'] = array( 'items' => [ array("id" => 1, "name" => "HDD", "price" => 69000), array("id" => 2, "name" => "CPU", "price" => 95000) ] );
Ha ez átjön például fetch() függvénnyel:
JavaScriptben:
console.log(products.items[0].name);
Másik
$data['products'] = array( array("id" => 1, "name" => "HDD", "price" => 69000), array("id" => 2, "name" => "CPU", "price" => 95000) );
JavaScriptben:
products[0].name
JSON konvertálás
<?php $ages = array("Péter" => 35, "Dávid" => 28, "Elemér"=>19); echo json_encode($ages);
<?php $content = file_get_contents('php://input'); $data = json_decode($content);
JSON-ből táblázat generálás
app01/ `-src/ |-database.json `-index.php
- src/database.json
{ "employees": [ { "id": 1, "name": "Erős István", "city": "Szeged" }, { "id": 2, "name": "Táró Iván", "city": "Szolnok" }, { "id": 3, "name": "Csontos Katalin", "city": "Szeged" }, { "id": 4, "name": "Heverő Lajos", "city": "Szolnok" }, { "id": 5, "name": "Csendes Irén", "city": "Szeged" } ] }
- src/index.html
<?php $json = file_get_contents('database.json', false); $array = json_decode($json, true); print("<table>"); foreach($array['employees'] as $emp) { print("<tr>"); print("<td>{$emp['name']}</td>"); print("<td>{$emp['city']}</td>"); print("</tr>"); } print("</table>");
Indítás
php -S localhost:8000 -t src
oktatas/programozas/php/php_json.txt · Utolsó módosítás: 2023/03/17 16:25 szerkesztette: admin