使用 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