Websiteentwicklung: PHP: JSON

JSON unter PHP

Bearbeiten

JSON ist ein Standardformat zur Objektserialisierung. Es dient dazu, Objekte mit möglichst wenig Aufwand von einem System an ein anderes zu übertragen, und ist neben XML eines der derzeit beliebtesten Serialisierungsformate. Es findet oftmals Einsatz als Schnittstellenformat in HTTP-basierenden APIs und ist deswegen für PHP-Programmierer, die solche Dienste in ihre eigenen Webangebote integrieren möchten, von hoher Relevanz.

PHP-Objekte in JSON umwandeln

Bearbeiten

Um ein PHP-Objekt in einen JSON-Objektstring umzuwandeln unterstuetzt PHP die Methode json_encode. Was hierbei geschieht betrachten wir an einem kleinen Beispiel. Nehmen wir an, wir haben eine Klasse in PHP, die Personen abbildet, und erstellen wir ein konkretes Person-Objekt:

class Person {
    public $firstname = "wiki"; //Vorname
    public $lastname = "books";  //Nachname
    public $age = 20;        //Alter
    public $pet = true;    //Hat Haustier?
 
  }

$testperson1 = new Person("wiki","books",21,true); // Erstelle eine Person, die Wiki Books heisst, 21 Jahre alt ist und ein Haustier hat.

dann koennten wir das PHP-Objekt $testperson1 folgendermassen in einen JSON-Objektstring umwandeln:

$testperson1_json = json_encode(get_object_vars($testperson1)); // Wandle $testperson1 in JSON um und speichere Ergebnis in $testperson1_json

$testperson1_json haette nun folgenden Inhalt:

{"firstname":"wiki","lastname":"books","age":21,"pet":true}

Wie wir sehen, wurden alle Attribute des Objekts $testperson1 in die JSON-Repraesentation uebernommen, allerdings erst, nachdem wir uns mittels get_object_vars die Attribute des Objekts in einem assoziativen Array gespeichert haben. Wichtig ist: json_encode kann bis auf Objekte alle PHP bekannten Datenstrukturen (Array und assoziatives Array) in JSON-Objektstrings umwandeln. Das funktoniert auch, wenn die Datenstrukturen verschachtelt sind.

JSON in PHP-Objekte umwandeln

Bearbeiten

Um einen JSON-String in ein PHP-Objekt umzuwandeln stellt PHP die Funktion json_decode zur Verfuegung. Ihr Einsatz sieht aus wie folgt:

$json = '{"testattribut1":"hello world","testattribut2":1337,"testattribut3":true}';
$object = json_decode($json);

$object Enthaelt nun ein generisches PHP-Objekt mit drei Attributen $object->testattribut1, $object->testattribut2 und $object->testattribut3, die jeweils einen string, einen integer und einen booleschen Wert enthalten.

Es kann in manchen Situationen sinnvoll sein, einen JSON-String nicht in ein Objekt umwandeln zu lassen, sondern in ein assoziatives Array. Das geht folgendermaßen:

$json = '{"testattribut1":"hello world","testattribut2":1337,"testattribut3":true}';
$array = json_decode($json,true);

$array enthaelt jetzt ein assoziatives Array mit drei Key-Value-Paaren: $array['testattribut1'], $array['testattribut2'] und $array['testattribut3'].