第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

Golang:驗證切片項中的結(jié)構(gòu)字段

Golang:驗證切片項中的結(jié)構(gòu)字段

Go
阿波羅的戰(zhàn)車 2022-12-19 21:31:17
我是高朗的新手。高朗版本:1.17.8驗證器:“ github.com/go-playground/validator/v10 ”我想在加載到嵌套結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)后驗證傳入的 JSON 有效負載。這是我傳入的 JSON 負載,  {  "name": "Yomiko",  "address": {    "city": "Tokyo",    "street": "Shibaura St"  },  "children":[    {      "lastName": "Takayashi"    }  ],  "isEmployed": false  }這是我的 user.go 文件,package maintype User struct {    Name    string    Address *Address `validate:"required"`    Children []*Child    IsEmployed *bool `validate:"required"`}type Address struct {    City     string `validate:"required"`    Street  string `validate:"required"`}type Child struct {    Title string `validate:"required"`    FirstName string    LastName string `validate:"required"`}這是我的測試功能,func TestUserPayload(t *testing.T) {    actualUserPayload := NewUserPayloadFromFile("userpayload.json")    validate := validator.New()    err := validate.Struct(actualUserPayload)    if err != nil {        t.Error("Validation Error: ", err)    }}這個測試通過。但是,我預(yù)計它會失敗,因為Child.Title被標記為required。我預(yù)計會出現(xiàn)以下錯誤,Validation Error:  Key: 'Child.Title' Error:Field validation for 'Title' failed on the 'required' tag但是,當(dāng)我循環(huán)遍歷子切片并按如下方式驗證每個子結(jié)構(gòu)時,測試按預(yù)期失敗,func TestUserPayload(t *testing.T) {    actualUserPayload := NewUserPayloadFromFile("userpayload.json")    validate := validator.New()    err := validate.Struct(actualUserPayload)    if err != nil {        t.Error("Validation Error: ", err)    }    children := actualUserPayload.Children    for _, child := range children {        err := validate.Struct(child)        if err != nil {            t.Error("Validation Error: ", err)        }    }}有沒有一種直接的方法來驗證一片結(jié)構(gòu)中的項目?
查看完整描述

1 回答

?
月關(guān)寶盒

TA貢獻1772條經(jīng)驗 獲得超5個贊

根據(jù)validator package 的文檔,您可以dive在 struct 標記中使用來獲得此行為。這會導(dǎo)致驗證器也驗證嵌套的結(jié)構(gòu)/切片/等。


所以你需要將你的User結(jié)構(gòu)更新為:


type User struct {

    Name       string

    Address    *Address `validate:"required"`

    Children   []*Child `validate:"dive"`

    IsEmployed *bool    `validate:"required"`

}

它在Go Playground中工作


查看完整回答
反對 回復(fù) 2022-12-19
  • 1 回答
  • 0 關(guān)注
  • 191 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號