日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

php小編魚仔為您帶來關于在Go語言中如何使用非必需的JSON參數的技巧。在編寫Go程序時,我們經常需要處理JSON數據,有時候我們可能只需要使用其中的一部分參數,而不需要全部參數。本文將介紹如何在Go中使用非必需的JSON參數,讓您能夠更靈活地處理JSON數據,提高代碼的可讀性和可維護性。無論您是初學者還是有一定經驗的開發者,本文都將為您提供有用的技巧和示例代碼,幫助您更好地理解和應用這一特性。讓我們一起來探索吧!

問題內容

您好,我正在 Go 中開發 Rest API,我希望用戶傳遞 JSON 參數:

Offset int64  `json:"offset"`
Limit  int64  `json:"limit"`
SortBy string `json:"sortby"`
Asc    bool   `json:"asc"`
Username   string `json:"username"`
First_Name string `json:"first_name"`
Last_Name  string `json:"last_name"`
Status     string `json:"status"`

登錄后復制

但它們并不總是必需的,例如用戶可以僅傳遞 Offset 并忽略其他。他甚至可以發送0個參數。我怎樣才能做到這一點?

解決方法

從 JSON 文本中解組值時,json 包不要求所有字段出現在 JSON 中,也不保證所有 JSON 字段都有匹配的 Go 字段。

所以你沒有什么特別的事情要做,只需將你所擁有的東西整理成 Go 值你想要或可能想要的東西即可。

需要注意的一點是,如果 JSON 文本中缺少某個字段,則 json 包不會更改相應的 Go 字段,因此如果以“新鮮”開頭,零值,該字段將保留其類型的零值。

大多數情況下,這足以檢測字段(在 JSON 中)是否存在,例如,如果在 Go 結構中您有一個 string 類型的 SortBy 字段,如果 JSON 中缺少該字段,它將保留空 string: "".

如果零值是有用且有效的,那么您可以轉向使用指針。例如,如果在您的應用程序中,空 string 將是有效的 SortBy 值,您可以將此字段聲明為指針:*string。在這種情況下,如果 JSON 文本中缺少它,它將保留 nil,即任何指針類型的零值。

請參閱此示例:

type Data struct {
    I int
    S string
    P *string
}

func main() {
    var d Data
    var err error

    d, err = Data{}, nil
    err = json.Unmarshal([]byte(`{"I":1, "S":"sv", "P":"pv"}`), &d)
    fmt.Printf("%#v %v\n", d, err)

    d, err = Data{}, nil
    err = json.Unmarshal([]byte(`{"I":1}`), &d)
    fmt.Printf("%#v %v\n", d, err)

    d, err = Data{}, nil
    err = json.Unmarshal([]byte(`{"S":"abc"}`), &d)
    fmt.Printf("%#v %v\n", d, err)
}

登錄后復制

輸出(在 Go Playground 上嘗試一下):

main.Data{I:1, S:"sv", P:(*string)(0x1050a150)} 
main.Data{I:1, S:"", P:(*string)(nil)} 
main.Data{I:0, S:"abc", P:(*string)(nil)} 

登錄后復制

分享到:
標簽:Go語言
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定