Heim >Backend-Entwicklung >PHP-Tutorial >Warum gibt json_decode nach einem Webdienstaufruf NULL zurück?
JSON-Dekodierungsproblem nach Webdienstaufruf
In dieser Situation bezüglich der JSON-Analyse tritt beim OP ein eigenartiges Problem auf, bei dem json_decode unerklärlicherweise NULL zurückgibt Aufrufen eines Webdienstes. Der Webdienst überträgt JSON-Daten, die scheinbar der richtigen Syntax folgen:
{"action":"set","user":"123123123123","status":"OK"}
Beim Versuch, diese JSON-Nutzlast in der PHP-Anwendung mit json_decode($foo, true) zu dekodieren, gibt er jedoch rätselhafterweise NULL zurück.
Mögliche Lösung
Um dieses verwirrende Problem anzugehen, hat das OP übersieht einen potenziell kritischen Faktor: PHP Magic Quotes. Wenn magische Anführungszeichen auf dem Server aktiviert sind, können sie bei eingehenden Daten verheerende Auswirkungen haben, indem sie potenziell gefährlichen Zeichen entkommen. In diesem Fall scheint der Webdienst JSON ohne Escapezeichen zu übertragen, was zu einem Konflikt mit magischen Anführungszeichen führt.
Um dieses Problem zu umgehen, deaktivieren Sie magische Anführungszeichen, indem Sie die folgende Zeile am Anfang des PHP-Skripts hinzufügen:
if (get_magic_quotes_gpc()) { $param = stripslashes($_POST['param']); } else { $param = $_POST['param']; } $param = json_decode($param, true);
Dadurch wird sichergestellt, dass die vom Webdienst empfangenen JSON-Daten von magischen Anführungszeichen unberührt bleiben, wodurch das Decodierungsproblem gelöst wird.
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!