Warum gibt mein PHP Programm kein json aus?
Hallo Community
Ich habe folgendes PHP Skript:
<?php
# json echo
$json = '
{
"message": "Some message in json!",
"category": "message
}';
$print_this = json_decode($json);
echo $print_this;
?>
Wenn ich dieses über ein Webserver in einem Browser aufmache, ist dieses leer. Weiss Jemand, was da das Problem ist? Der Server kann andere PHP Programme ohne Probleme ausführen.
Danke für eure Hilfe.
3 Antworten
Schau halt mal ins Log. In dem Fall ist vielleicht das JSON nicht gültig (fehlt auch einmal Anführungszeichen hinter "message").
Würde das auch eher so machen:
try{
$data = array(
"message" => "Some message in json!",
"category" => "message",
);
$json_data = json_encode($data, JSON_PRESERVE_ZERO_FRACTION);
if($json_data === FALSE){
throw new Exception("Failed to encode JSON: ".json_last_error_msg());
}
header("Content-Type: application/json");
echo $json_data;
exit();
}catch(Exception $ex){
logError($ex);
header("HTTP/1.1 500 Internal Server Error");
readfile($file_error_500);
exit();
}
Was verstehst du unter einer Liste? Je nachdem, wie du den Text ausgibst, musst du den Content-Type passend wählen und die entsprechend passend formattierten Daten ausgeben.
Wenn du das JSON wieder in ein Objekt umwandelst, kann es ja nicht klappen. Außerdem ist dein JSON fehlerhaft, da am Ende ein " fehlt.
Also entweder korrektes JSON und nur:
echo $json;
… oder einfacher:
$objData = (object)[
'message' => 'Some message in json!',
'category' => 'message',
];
echo json_encode($objData);
Warum json_decode? Du hast es doch bereits als String? json_encode würde es zu einem json machen
@Destranix kann ich das json nun auch in einer Liste [ ] ausgeben lassen?