有没有办法在protoc-gen-go中将json的键名设置为lowerCamelCase?

时间:2018-07-12 06:16:45

标签: go protocol-buffers

当使用protoc-gen-go从proto文件生成go代码时,json的密钥名称将保留为proto文件中指定的密钥。 在官方字段名称中,建议使用蛇案。 https://developers.google.com/protocol-buffers/docs/style

但是,我希望json的键名是蛇形。

当我检查protoc-gen-go的生成器代码时,我确实将字段名称设置为原样。

$size

这对我来说是理想的解决方案:

jsonName := *field.Name
tag := fmt.Sprintf("protobuf:%s json:%q", g.goTag(message, field, wiretype), jsonName+",omitempty")

如何获取蛇形的字段名?

2 个答案:

答案 0 :(得分:0)

您正在自行计算标签名称,因此您可以自己对其进行转换。 github上已经有一个工作包:https://github.com/iancoleman/strcase

要自己转换名称:

import "github.com/iancoleman/strcase"

jsonName := strcase.ToSnake(*field.Name)

答案 1 :(得分:0)

此问题已解决。

通过使用gogo / protobuf(https://github.com/gogo/protobuf)。

我使用了gogoproto.jsontag