JSON und PHP
als Präsentation ▻Serialisierung
Der PHP Befehl lautet json_encode.
Welche Datenstrukturen von PHP lassen sich zu JSON serialisieren?
Objekt
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"}
Array
Ein “normales” Array mit Integer als Index lässt sich direkt auf JSON abbilden:
$array = array( "Apple", "Banana" );
echo json_encode( $array );
// ["Apple","Banana"]
Assoziatives Array
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.
▻Deserialisierung
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.
decode false
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
decode true
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
JSON als Rückgabewert
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);
Aus einer JSON Datei
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);
Referenz
Kapitel
- Das Web Und Html
- Css
- Css Layout
- Urls
- Formulare
- Javascript Dom
- Php Vorbereitung
- Php
- Php Db Lesen
- Session
- Php Db Schreiben
- Php Db Optimierung
- Grafik
- Javascript
- Applied Js And Css
- Js Http
- Json
- Security
- Threat Modeling
- A01 - Zugriffskontrolle
- A02 - Fehlkonfiguration
- A03 - Software Supply Chain Failures
- A04 - Cryptographic Failures
- A05 - Injection + XSS
- A06 - Insecure design
- A07 - Identification and Authentication Failures
- A08 - Software and Data Integrity Failures
- A09 - Security Logging and Alerting Failures
- Prompt Injection
- Wordpress
- Apache
- Advanced Javascript
- Mobile
- Qualitaet
- Kommandozeile
- Git
- Http
- Xml