如何更改golang标签的默认操作?

我不熟悉 的用法golang tags,我想更改转换的默认操作:


type CvJdRelationInfo struct {

    JdId            string

    CvId            string

    Status          int16

    AcceptTimestamp int64

}

json 标签将自动转换:


JdId -> JdId

CvId -> CvId

Status -> Status

AcceptTimestamp -> AcceptTimestamp

bson 标签将自动转换:


JdId -> jdid

CvId -> cvid

Status -> status

AcceptTimestamp -> accepttimestamp

我可以更改默认操作json bson吗,例如标签会这样做:


JdId -> jdId

CvId -> cvId

Status -> status

AcceptTimestamp -> acceptTimeStamp

所以我每次都可以省略所有标签(如果默认操作正是我想要的,为什么我每次都写标签?)


type CvJdRelationInfo struct {

    JdId            string `json:"jdId" bson:"jdId"`

    CvId            string `json:"cvId" bson:"cvId"`

    Status          int16  `json:"status" bson:"status"`

    AcceptTimestamp int64  `json:"acceptTimestamp" bson:"acceptTimestamp"`

}


慕标5832272
浏览 162回答 2
2回答

BIG阳

你可以试试:   type CvJdRelationInfo struct {     JdId            string    `bson:"jdId" json:"jdId"`     CvId            string    `bson:"cvId" json:"cvId"`     Status          int16     `bson:"status" json"status"`     AcceptTimestamp int64     `bson:"acceptTimeStamp" json:"acceptTimeStamp"`   }

POPMUISE

您无法更改encoding/json包的默认行为。它内置于其中,并且没有可以更改它的导出变量或函数。没什么好讨论的。对象的默认键字符串是结构字段名称,但可以在结构字段的标签值中指定。这里要注意的一件事是,即使将值编组到 JSON 将使用导出的大写名称,但是当您解组时,该json包也足够“智能”,可以将小写名称与大写字段名称匹配。看这个例子:s := struct{ X, Y int }{}if err := json.Unmarshal([]byte(`{"X":1,"y":2}`), &s); err != nil {    panic(err)}fmt.Printf("%+v", s)它将打印(Go Playground):{X:1 Y:2}即使是小写json的"X",该包也正确地将和"y"键与s.X和s.Y字段匹配"y"。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go