Json_encode fügt Backslashes hinzu: Enthüllung des Geheimnisses
Im Bereich JavaScript ist json_encode seit langem ein vertrauenswürdiger Verbündeter für die Codierung von Daten in das JSON-Format . Einige Entwickler sind jedoch auf ein unerwartetes Phänomen gestoßen, bei dem json_encode Backslashes in die Ausgabe einfügt.
Das Upload-Rätsel
Ein solcher Fall tritt auf, wenn json_encode verwendet wird, um danach JSON-Daten zurückzugeben ein Datei-Upload. Betrachten Sie den folgenden Code:
print_r($result); // Associative array $encoded_result = json_encode($result); // Valid JSON echo $encoded_result;
Die unerklärlichen Backslashes
Zur Überraschung des Entwicklers enthält der resultierende JSON unerwünschte Backslashes:
{"logo_url":"http:\/\/mysite.com\/uploads\/gallery\/7f\/3b\/f65ab8165d_logo.jpeg","img_id":"54","feedback":{"message":"File uploaded","success":true}}
Den Täter ausfindig machen
Erste Untersuchungen ergaben, dass die Backslashes irgendwo zwischen json_encode und der Analyse der JSON-Daten durch den Browser eingefügt wurden.
alert(data.toSource()); // Result: invalid JSON with added "status:200"
Die versteckte Variable
Eine genauere Untersuchung ergab einen unerwarteten Übeltäter: das Plupload-Bindeereignis.
uploader.bind('FileUploaded', function(up, file, data) { alert(data.toSource()); $('#' + file.id + " b").html("100%"); });
Plupload, eine beliebte Datei-Upload-Bibliothek, schien die zurückgegebenen Daten zu manipulieren, fügte hinzu die „status:200“-Eigenschaft und die Codierung der Schrägstriche.
Die Lösung: Den Schrägstrichen entkommen
Um die unerwünschten Backslashes zu verhindern, wurde der Code so geändert, dass er das „ Option „JSON_UNESCAPED_SLASHES“ im json_encode-Funktionsaufruf:
$encoded_result = json_encode($result, JSON_UNESCAPED_SLASHES);
Diese Option deaktiviert effektiv das Escapezeichen von Schrägstrichen, was zur gewünschten JSON-Ausgabe führt:
{"logo_url":"http://mysite.com/uploads/gallery/7f/3b/f65ab8165d_logo.jpeg","img_id":"54","feedback":{"message":"File uploaded","success":true}}
Enthüllung der Wahrheit
Zusammenfassend lässt sich sagen, dass das Hinzufügen von Backslashes in der json_encode-Ausgabe auf die unbeabsichtigte Manipulation von Daten durch das Plupload-Bindeereignis zurückzuführen ist. Durch die Integration der Option „JSON_UNESCAPED_SLASHES“ können Entwickler verhindern, dass dieses unerwünschte Escape-Zeichen ihre JSON-Daten beeinträchtigt.
Das obige ist der detaillierte Inhalt vonWarum fügt „json_encode' Backslashes hinzu und wie kann ich das verhindern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!