Heim >Backend-Entwicklung >PHP-Tutorial >Warum gibt „json_decode' nach einem Webdienstaufruf NULL zurück?
JSON-Dekodierung gibt nach Webdienstaufruf Null zurück
Dieser Thread untersucht ein eigenartiges Verhalten, das beim Dekodieren von JSON-Antworten von einem Webdienstaufruf auftritt. Das Problem entsteht dadurch, dass die json_decode-Funktion NULL zurückgibt, obwohl der Webdienst JSON-Daten zurückgibt.
Um dieses Problem zu beheben, ist es wichtig, die Grundursache zu identifizieren. Im gegebenen Szenario liegt der Schlüssel zum Problem in magischen Anführungszeichen, einer veralteten PHP-Konfiguration. Magische Anführungszeichen maskieren bestimmte Zeichen automatisch und ändern ihre Bedeutung in globalen Variablen wie $_GET, $_POST, $_COOKIE usw.
Wenn magische Anführungszeichen aktiviert sind, beeinträchtigen sie den Dekodierungsprozess, indem sie die von empfangenen JSON-Daten beschädigen Der Webdienst. Dies führt dazu, dass json_decode fehlschlägt und NULL zurückgibt.
Lösung:
Um dieses Problem zu beheben, müssen magische Anführungszeichen unbedingt speziell für die Variable $_POST deaktiviert werden. Dies kann durch den folgenden Code erreicht werden:
if (get_magic_quotes_gpc()) { $param = stripslashes($_POST['param']); } else { $param = $_POST['param']; } $param = json_decode($param, true);
Durch die Deaktivierung magischer Anführungszeichen bleiben die JSON-Daten intakt und können mit json_decode erfolgreich dekodiert werden.
Das obige ist der detaillierte Inhalt vonWarum gibt „json_decode' nach einem Webdienstaufruf NULL zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!