首頁  >  文章  >  後端開發  >  如何在沒有定義資料結構的情況下從 Go 中的請求體讀取 JSON?

如何在沒有定義資料結構的情況下從 Go 中的請求體讀取 JSON?

Susan Sarandon
Susan Sarandon原創
2024-10-31 23:08:29602瀏覽

How to Read JSON from Request Body in Go Without Defined Data Structures?

在Go 中從請求正文讀取JSON

在Go 中,獲取POST 請求的原始JSON 正文對於初學者來說可能具有挑戰性。這是因為 http.Response.Body 會緩衝響應,從而阻止後續讀取。

但是,有一種解決方法,可以在不依賴預定資料結構的情況下捕獲 JSON 正文。為了實現這一點:

<code class="go">// Capture the body bytes
bodyBytes, _ := ioutil.ReadAll(context.Request().Body)

// Restore the response body
context.Request().Body = ioutil.NopCloser(bytes.NewBuffer(bodyBytes))

// Decode the JSON
var v interface{}
err := json.NewDecoder(context.Request().Body).Decode(&v)
if err != nil {
    return result, err
}</code>

這種方法保留了原始正文以供後續閱讀。

為了進一步演示,這裡有一個使用Echo 框架的範例:

<code class="go">func myHandler(c echo.Context) error {
    // Capture the body bytes
    bodyBytes, _ := ioutil.ReadAll(c.Request().Body)

    // Restore the response body
    c.Request().Body = ioutil.NopCloser(bytes.NewBuffer(bodyBytes))

    // Decode the JSON
    var payload map[string]interface{}
    err := json.NewDecoder(c.Request().Body).Decode(&payload)
    if err != nil {
        return c.JSON(http.StatusBadRequest, "Invalid JSON provided")
    }

    // Use the decoded payload
    return c.JSON(http.StatusOK, payload)
}</code>

這個解決方案使您能夠捕獲原始JSON 正文,而無需任何強加的結構,使其非常適合需要處理任意JSON 資料的情況。

以上是如何在沒有定義資料結構的情況下從 Go 中的請求體讀取 JSON?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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