Warum fügt Json_encode Backslashes hinzu?
Beim Einsatz von json_encode in einem Datei-Upload-Skript wurde festgestellt, dass die resultierenden JSON-Daten unerwartete Inhalte enthalten Backslashes. Dies wirft die Frage auf, warum json_encode diese Escapezeichen einführt.
Die Option JSON_UNESCAPED_SLASHES
Die Antwort liegt in einer bestimmten Option, die in json_encode verfügbar ist. Standardmäßig maskiert json_encode bestimmte Zeichen, einschließlich Schrägstriche (Backslashes), um sicherzustellen, dass der generierte JSON gültig bleibt. In manchen Fällen, beispielsweise beim Umgang mit URLs wie der bereitgestellten, können diese Escapezeichen jedoch unerwünscht sein.
Um dieses Problem zu beheben, wurde in PHP Version 5.4 die Option JSON_UNESCAPED_SLASHES eingeführt. Bei Verwendung weist diese Option json_encode an, das Entkommen von Schrägstrichen zu vermeiden, wodurch das vorliegende Problem effektiv gelöst wird.
Codeänderung
Um die Lösung zu implementieren, integrieren Sie einfach die Konstante JSON_UNESCAPED_SLASHES als ein zweiter Parameter innerhalb der json_encode-Funktion. Der geänderte Code sollte wie folgt aussehen:
echo json_encode($result, JSON_UNESCAPED_SLASHES); // <-- Adds the JSON_UNESCAPED_SLASHES option
Dadurch wird sichergestellt, dass der resultierende JSON keine unnötigen Backslashes enthält und das gewünschte Ergebnis liefert:
{ "logo_url": "http://mysite.com/uploads/gallery/7f/3b/f65ab8165d_logo.jpeg", "img_id": "54", "feedback": { "message": "File uploaded", "success": true } }
Das obige ist der detaillierte Inhalt vonWarum fügt „json_encode' Backslashes zu meinen JSON-Daten hinzu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!