Limba în care vorbesc API-urile
API-urile schimbă date sub formă de JSON — text de tipul {"id": 1, "name": "Ana"}. PHP traduce în ambele direcții cu două funcții încorporate: json_encode transformă o valoare în text JSON, json_decode transformă textul JSON înapoi în date PHP.
Tablourile asociative sunt purtătorul firesc: cheile tabloului devin cheile JSON, exact așa cum sunt scrise. Transmiterea lui true ca al doilea argument al lui json_decode cere tablouri la ieșire (în locul obiectelor) — exemplele de aici fac mereu asta.
De la tablou la JSON
json_encode produce JSON compact pentru mașini; flagul JSON_PRETTY_PRINT produce JSON lizibil pentru oameni și pentru jurnale. Eliminarea câmpurilor goale este decizia ta: filtrează-le din tablou înainte de codificare.
Codificare, compactă și lizibilă
Ana nu are e-mail, iar filtrul scoate complet câmpul gol din JSON-ul ei. Înregistrarea completă a lui Ben se afișează indentată.
Ieșire: script PHP
<?php
function toJson(array $user): string {
// Lăsăm câmpurile goale complet în afara JSON-ului.
return json_encode(array_filter($user, fn($value) => $value !== ""));
}
$ana = ["id" => 1, "name" => "Ana", "email" => ""];
echo toJson($ana) . "\n";
$ben = ["id" => 2, "name" => "Ben", "email" => "ben@example.com"];
echo json_encode($ben, JSON_PRETTY_PRINT) . "\n";
De la JSON la date
json_decode analizează JSON-ul și îl transformă în tablouri. Cheile JSON necunoscute nu sunt eliminate — ele vin mai departe ca intrări suplimentare pe care codul tău le poate ignora liniștit; cheile lipsă sunt pur și simplu absente, așa că citește-le cu ?? și o valoare implicită. Un JSON greșit întoarce null, iar json_last_error_msg() îți spune de ce — verifică mereu înainte de a te încrede în rezultat.
Decodificarea și cheia suplimentară
JSON-ul poartă o cheie extra pe care codul nu a cerut-o niciodată — nicio eroare, ea apare pur și simplu în tabloul decodificat, așa cum arată lista de chei. Un JSON deteriorat, în schimb, întoarce null împreună cu un mesaj de eroare real.
Ieșire: script PHP
<?php
$data = '{"id": 7, "name": "Cleo", "extra": "ignored"}';
$user = json_decode($data, true);
echo "id: {$user['id']}, nume: {$user['name']}\n";
echo "chei: " . implode(", ", array_keys($user)) . "\n";
$broken = json_decode('{"id": ', true);
if ($broken === null) {
echo "eroare: " . json_last_error_msg() . "\n";
}
Date imbricate
Datele reale trimise de API-uri se imbrică: o comandă poartă utilizatorul său și o listă de articole. Tablourile din tablouri se transpun automat în JSON — un tablou cu chei devine un obiect JSON, o listă devine un tablou JSON — fără tratare specială.
O comandă cu un utilizator în interior
Tabloul user imbricat devine un obiect JSON imbricat, lista items devine un tablou JSON — forma datelor PHP este forma JSON-ului.
Ieșire: script PHP
<?php
$order = [
"id" => 1042,
"items" => ["keyboard", "mouse"],
"user" => ["id" => 1, "name" => "Ana"],
];
echo json_encode($order, JSON_PRETTY_PRINT) . "\n";