Felhasználói eszközök

Eszközök a webhelyen


oktatas:programozas:php:php_json

< PHP

PHP JSON feldolgozás

  • Szerző: Sallai András
  • Copyright © Sallai András, 2015, 2021
  • Licenc: GNU Free Documentation License 1.3

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));
index.html
<!DOCTYPE html>
<html lang="hu">
<head>
    <meta charset="UTF-8">
    <title>JSON</title>
</head>
<body>
    <h1>JSON</h1>
    <script src="app.js"></script>
</body>
</html>

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