首頁  >  文章  >  後端開發  >  為什麼 `json_encode` 會為我的 JSON 輸出添加不需要的反斜線?

為什麼 `json_encode` 會為我的 JSON 輸出添加不需要的反斜線?

Linda Hamilton
Linda Hamilton原創
2024-11-13 00:41:01911瀏覽

Why does `json_encode` add unwanted backslashes to my JSON output?

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn