Felhasználói eszközök

Eszközök a webhelyen


oktatas:programozas:php:php_json

Ez a dokumentum egy előző változata!


< 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);
oktatas/programozas/php/php_json.1647865174.txt.gz · Utolsó módosítás: 2022/03/21 13:19 szerkesztette: admin