Warum gibt mein PHP Programm kein json aus?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

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();
}
composable 
Fragesteller
 16.08.2022, 16:56

Das hat funktioniert. Vielen Dank!

1
composable 
Fragesteller
 18.08.2022, 10:17

@Destranix kann ich das json nun auch in einer Liste [ ] ausgeben lassen?

0
Destranix  18.08.2022, 11:30
@composable

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.

1

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);
Woher ich das weiß:Berufserfahrung – Entwickle seit > 20 Jahren Anwendungen mit PHP.

Warum json_decode? Du hast es doch bereits als String? json_encode würde es zu einem json machen