Golang Go语言中求助 pb 生成结构体, 字段风格问题
pb 定义
message User {
int64 user_id = 1;
}
go 结构体
type User struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
UserId int64 `protobuf:"varint,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
}
如上定义, 生成的结构体在接收 json 参数的时候 传递的参数如下
{"userId":1000}
{"user_id":1000}
如上描述, pb 生成的结构体在接收 json 参数的时候, 对应的参数能接收 user_id 也能接收 userId. 两种风格的参数都能正确传递, 这样虽然可以用, 但是对 api 定义不太严谨. 查阅了一些资料没找到解决方案 希望只能接收一种风格的参数, 要么 user_id 要么 userId
有大佬解答一下吗
Golang Go语言中求助 pb 生成结构体, 字段风格问题
更多关于Golang Go语言中求助 pb 生成结构体, 字段风格问题的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
protobuf json tag 搜一下
更多关于Golang Go语言中求助 pb 生成结构体, 字段风格问题的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
感谢
但是现在遇到了新的问题<br> int64 user_id = 1 [json_name="userId"];<br>
如果 json_name 定义为 user_id 的情况下 已经不可以接收 userId 这样的驼峰参数
但是如果 json_name 为上面的 userId 依然同时可以接收两种类型的参数
现在考虑到前端的工作量, 计划仅保留驼峰风格
定义两个字段 一个 userId 一个 user_id ,自己在处理时兼容一下
https://github.com/golang/protobuf/blob/master/protoc-gen-go/generator/generator.go#L2225
看这里主要看下怎么控制 name/field_name/json_name 统一吧.