[[oktatas:programozás:php|< PHP]] ====== PHP JSON feldolgozás ====== * **Szerző:** Sallai András * Copyright (c) Sallai András, 2015, 2021 * Licenc: GNU Free Documentation License 1.3 * Web: https://szit.hu ===== Példa 001 ===== { "dolgozok": [ { "nev": "Nagy József", "kor": "35", "fizetes": "870000" }, { "nev": "Para Lajos", "kor": "30", "fizetes": "975000" } ] } ===== 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 ===== [ 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'); * https://www.php.net/manual/en/json.constants.php * https://www.php.net/manual/en/function.json-encode.php ==== Lekérés JavaScripttel ==== Általában így valósítják meg: 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: 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)); * https://developer.mozilla.org/en-US/docs/Web/API/fetch JSON

JSON

===== 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 ===== 35, "Dávid" => 28, "Elemér"=>19); echo json_encode($ages); ===== JSON-ből táblázat generálás ===== app01/ `-src/ |-database.json `-index.php { "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" } ] } "); foreach($array['employees'] as $emp) { print(""); print("{$emp['name']}"); print("{$emp['city']}"); print(""); } print(""); ==== Indítás ==== php -S localhost:8000 -t src