Heim >Backend-Entwicklung >PHP-Tutorial >Warum gibt json_decode nach einem Webdienstaufruf NULL zurück?

Warum gibt json_decode nach einem Webdienstaufruf NULL zurück?

Susan Sarandon
Susan SarandonOriginal
2024-12-05 11:50:10806Durchsuche

Why is json_decode Returning NULL After a Web Service Call?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn