使用 Gin 框架中的 PureJSON 發送未轉義的 JSON
當我們使用 Go 的 Gin web 框架來構建 RESTful API 時,通常會遇到返回 JSON 響應的需求。Gin 框架提供了c.JSON方法來以 JSON 格式發送回覆,同時它會對特殊字符進行轉義,比如把 < 轉換爲 \u003c。但在某些情況下,我們需要發送未轉義的 JSON 數據,這時我們就可以使用 Gin 框架中的c.PureJSON方法。
在 Gin 框架中,c.PureJSON方法能夠保證返回的 JSON 數據中的 HTML 特殊字符不會被轉義。這在處理某些特殊的前端 JavaScript 庫時非常有用,它們可能需要分析和處理原始的 HTML 字符。
示例:使用 PureJSON 方法發送未轉義的 JSON
以下是一個使用 Gin 框架和c.PureJSON的示例代碼,它向客戶端發送未轉義的 JSON 響應。
package main
import (
"github.com/gin-gonic/gin"
)
func main() {
r := gin.Default()
r.GET("/json", func(c *gin.Context) {
data := map[string]interface{}{
"html": "<div>Hello, world!</div>",
}
// 使用PureJSON而不是JSON來發送未轉義的JSON
c.PureJSON(200, data)
})
r.Run() // 監聽並在 0.0.0.0:8080 上啓動服務
}
運行上面的代碼,並通過瀏覽器或者 curl 訪問 http://localhost:8080/json:
curl http://localhost:8080/json
你將會收到如下響應,其中 HTML 標籤沒有被轉義:
{"html":"<div>Hello, world!</div>"}
注意
c.PureJSON 方法在 Go 1.6 及以下版本不可用,因爲它依賴於json包新增加的功能。如果你正在使用較舊的 Go 版本,那麼你將無法使用c.PureJSON,並且需要自行考慮如何處理特殊字符的情況。
總結
在構建前後端分離的應用時,處理 JSON 數據時的細節至關重要。確認你的服務和客戶端能夠正確處理未轉義的字符是實現響應 - API 交互的關鍵一環。Gin 框架中的c.PureJSON提供了一個便捷的功能來保持 JSON 響應中特殊字符的字面值,但它對 Go 的版本有一定的要求。在實際開發中要視自己的應用需求和環境做出選擇,以使用最適宜的方法來處理 JSON 數據。
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/uAJyw3h76hGBtTv3o74OqQ