[[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