vorige Präsentation: JSON und JavaScript | zurück zum Buch-Kapitel [esc] | Nächste Präsentation Web Security
Der PHP Befehl lautet json_encode.
Welche Datenstrukturen von PHP lassen sich zu JSON serialisieren?
Ein PHP Objekt lässt sich als JSON Objekt darstellen:
$object = new stdClass();
$object->name = "Alice";
$object->foo = 30;
echo json_encode( $object );
// {"foo":30,"name":"Alice"}
Ein “normales” Array mit Integer als Index lässt sich direkt auf JSON abbilden:
$array = array( "Apple", "Banana" );
echo json_encode( $array );
// ["Apple","Banana"]
Jedes Array kann in PHP auch Strings als Index enthalten. Ist das der Fall, dann wird es in JSON als Objekt dargestellt:
$array = array( "foo" => 30, "name" => "Alice");
echo json_encode( $array );
// {"foo":30,"name":"Alice"}
In JSON gibt es keine Entsprechung für das Assoziative Array in PHP. Deswegen wird es als Objekt dargestellt.
Wie sollen nun JSON-Objekt zu PHP übersetzt werden? Als Objekt oder als Assoziatives Array?
Hier gibt es zwei Varianten, die man über das zweite Argumente von json_decode unterscheidet.
false als zweites Argument oder gar kein zweites Argument bewirkt, dass
alle JSON-Objekte zu PHP-Objekten übersetzt werden
$string = '{"name":"Alice"}';
$o = json_decode( $string );
var_export( $o );
// stdClass Object
// (
// [name] => Alice
// )
echo "Wert von name: " . $o->name;
// Alice
true als zweites Argument bewirkt, dass
alle Objekte als assoziative Arrays decodiert werden.
$string = '{"name":"Alice"}';
$o = json_decode( $string, true );
print_r( $o );
// Array
// (
// [name] => "Alice"
// )
echo "Wert von name: " . $o['name'];
// Alice
Normalerweise liefert ein PHP Programm als Output HTML. Wenn man statt dessen JSON ausliefern will muss man den HTTP-Header ‘Content-Type’ und eventuell den HTTP Response Code entsprechend setzen.
header("Content-type: application/json; charset=utf-8");
http_response_code(200);
echo json_encode($data);
Mit dem Befehl file_get_contents kann man den gesamten Inhalt einer Datei lesen:
$string_or_false = file_get_contents('some_data.json');
if($string_or_false == false) {
echo "Error reading file";
exit();
}
$data = json_decode($string, true);
vorige Präsentation: JSON und JavaScript | zurück zum Buch-Kapitel [esc] | Nächste Präsentation Web Security
/
#