当使用protoc gen go从proto文件生成go代码时,json的密钥名将保留为proto文件中指定的密钥。在官方字段中,建议使用snake案例。https://developers.google.com/protocol-buffers/docs/style
但是,我希望json的关键名称是蛇案。
当我检查protoc gen go的生成器代码时,我当然会按原样设置字段名。
jsonName := *field.Name
tag := fmt.Sprintf("protobuf:%s json:%q", g.goTag(message, field, wiretype), jsonName+",omitempty")
这将是我的理想解决方案:
jsonName := field.GetJsonName()
在snake case中如何获取字段名?
您正在自己计算标记名,以便自己进行转换。github上已经有一个包执行此任务:https://github.com/iancoleman/strcase
要自己转换名称:
import "github.com/iancoleman/strcase"
jsonName := strcase.ToSnake(*field.Name)
这个问题解决了。
通过使用gogo/Pro buf(https://github.com/gogo/protobuf)。
我用过gogoproto。jsontag。