JSON 難題:解決 json_encode 中的反斜線異常
在 JSON 資料編碼領域,json_encode 函數長期以來一直是值得信賴的工具。然而,最近的遭遇引發了一個令人費解的問題:為什麼 json_encode 添加不需要的反斜線?
為了深入研究這個謎團,讓我們檢查提供的程式碼:
print_r($result); echo json_encode($result);
print_r 指令顯示關聯陣列符合預期。當應用 json_encode 時,它將數組轉換為 JSON,這看起來是有效的。然而,經過進一步檢查,隱藏的斜杠出現了。
{ "logo_url":"http:\/\/mysite.com\/uploads\/gallery\/7f\/3b\/f65ab8165d_logo.jpeg", "img_id":"54", "feedback":{"message":"File uploaded","success":true} }
為什麼會有這些無關的反斜線?進一步的調試揭示了故事的轉折。該異常不是發生在 json_encode 本身,而是發生在後續的 parseJSON 呼叫中。使用data.toSource() 檢查JavaScript 資料發現不符合JSON 的字串:
({response:"{\"logo_url\":\"http:\/\/storelocator.com\/wp-content\/uploads\/gallery\/7f\/3b\/71b9520cfc91a90afbdbbfc9d2b2239b_logo.jpeg\",\"img_id\":\"62\",\"feedback\":{\"message\":\"File uploaded\",\"success\":true}}", status:200})
解決方案:
解決此問題的關鍵在於為json_encode 指定“JSON_UNESCAPED_SLASHES”選項。 PHP 5.4 版中引入,此選項有效地防止函數在正斜杠中添加反斜杠。
json_encode($array,JSON_UNESCAPED_SLASHES);
有了這些知識,不需要的反斜杠的謎團就被解決了,從而實現無縫 JSON 編碼,而不會受到逃避現實的干擾!
以上是為什麼 `json_encode` 會為我的 JSON 輸出添加不需要的反斜線?的詳細內容。更多資訊請關注PHP中文網其他相關文章!