为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
慕标5832272 2021-11-22 15:29:34
我不熟悉 的用法golang tags,我想更改转换的默认操作:type CvJdRelationInfo struct {    JdId            string    CvId            string    Status          int16    AcceptTimestamp int64}json 标签将自动转换:JdId -> JdIdCvId -> CvIdStatus -> StatusAcceptTimestamp -> AcceptTimestampbson 标签将自动转换:JdId -> jdidCvId -> cvidStatus -> statusAcceptTimestamp -> accepttimestamp我可以更改默认操作json bson吗,例如标签会这样做:JdId -> jdIdCvId -> cvIdStatus -> statusAcceptTimestamp -> 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"`}
查看完整描述

2 回答

?
BIG阳

TA贡献1859条经验 获得超6个赞

你可以试试:


   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"`

   }


查看完整回答
反对 回复 2021-11-22
?
POPMUISE

TA贡献1765条经验 获得超5个赞

您无法更改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"。


查看完整回答
反对 回复 2021-11-22
  • 2 回答
  • 0 关注
  • 161 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信