亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Go gin 獲取請求正文 json

Go gin 獲取請求正文 json

Go
素胚勾勒不出你 2022-06-06 14:52:28
我使用郵遞員發布數據并在正文中放置一些簡單的 json請求正文{    "order":"1",    "Name":"ts1"}我需要將數據傳輸到 json 并嘗試如下操作,但我無法獲取 json,不知道缺少什么router.POST("/user", func(c *gin.Context) {        var f interface{}        //value, _ := c.Request.GetBody()        //fmt.Print(value)        err2 := c.ShouldBindJSON(&f)        if err2 == nil {            err = client.Set("id", f, 0).Err()            if err != nil {                panic(err)            }        }f 不是 json 并且我收到錯誤,知道如何使它工作嗎?錯誤是:redis: can't marshal map[string]interface {} (implement encoding.BinaryMarshaler)我使用https://github.com/go-redis/redis#quickstart如果我刪除主體并使用這樣的硬編碼代碼,我可以設置數據,它可以工作json, err := json.Marshal(Orders{    order:   "1",    Name: "tst",})client.Set("id", json, 0).Err()
查看完整描述

3 回答

?
qq_遁去的一_1

TA貢獻1725條經驗 獲得超8個贊

如果只想將請求體 JSON 作為值傳遞給 Redis,則不需要將 JSON 綁定到值。直接從請求正文中讀取原始 JSON 并將其傳遞:


jsonData, err := ioutil.ReadAll(c.Request.Body)

if err != nil {

    // Handle error

}

err = client.Set("id", jsonData, 0).Err()


查看完整回答
反對 回復 2022-06-06
?
largeQ

TA貢獻2039條經驗 獲得超8個贊

或者您可以將GetRawData()函數用作:


jsonData, err := c.GetRawData()


if err != nil{

   //Handle Error

}


err = client.Set("id", jsonData, 0).Err()


查看完整回答
反對 回復 2022-06-06
?
犯罪嫌疑人X

TA貢獻2080條經驗 獲得超4個贊

讓我們舉個例子。假設您的請求正文有這樣的用戶電子郵件:


{ email: "[email protected]" }

現在你想在 bakend 上收到這封電子郵件。首先定義如下結構:


    type EmailRequestBody struct {

    Email string

    }

現在您可以輕松地將請求正文中的電子郵件值綁定到您定義的結構,如下所示:首先為您的結構定義一個變量,如下所示,然后綁定該值:


func ExampleFunction(c *gin.Context) {


var requestBody EmailRequestBody


   if err := c.BindJSON(&requestBody); err != nil {

       // DO SOMETHING WITH THE ERROR

   }


  fmt.Println(requestBody.Email)

}

您可以輕松訪問電子郵件值并將其打印出來或做任何您需要的事情:


fmt.Println(requestBody.Email)讓我們舉個例子。假設您的請求正文有這樣的用戶電子郵件:


{ email: "[email protected]" }

現在你想在 bakend 上收到這封電子郵件。首先定義如下結構:


    type EmailRequestBody struct {

    Email string

    }

現在您可以輕松地將請求正文中的電子郵件值綁定到您定義的結構,如下所示:首先為您的結構定義一個變量,如下所示,然后綁定該值:


func ExampleFunction(c *gin.Context) {


var requestBody EmailRequestBody


   if err := c.BindJSON(&requestBody); err != nil {

       // DO SOMETHING WITH THE ERROR

   }


  fmt.Println(requestBody.Email)

}

您可以輕松訪問電子郵件值并將其打印出來或做任何您需要的事情:


fmt.Println(requestBody.Email)


查看完整回答
反對 回復 2022-06-06
  • 3 回答
  • 0 關注
  • 601 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號