【问题标题】:Is there a way to make json's key name lowerCamelCase in protoc-gen-go?有没有办法在protoc-gen-go中使json的键名lowerCamelCase?
【发布时间】:2018-07-14 20:26:59
【问题描述】:

当使用 protoc-gen-go 从 proto 文件生成 go 代码时,json 的 key 名称将保持为 proto 文件中指定的 key。 在官方字段名称蛇案例推荐。 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()

如何获取蛇案例中的字段名称?

【问题讨论】:

    标签: go protocol-buffers


    【解决方案1】:

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

    自行转换名称:

    import "github.com/iancoleman/strcase"
    
    jsonName := strcase.ToSnake(*field.Name)
    

    【讨论】:

    • 谢谢。但事实并非如此。如果可能的话,我想在 protoc-gen-go 的机制中安顿下来。
    【解决方案2】:

    这个问题已经解决了。

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

    我使用了gogoproto.jsontag

    【讨论】:

    • 如果您对解决方案进行了适当的演练,将会更有帮助。
    猜你喜欢
    • 2021-02-25
    • 1970-01-01
    • 2021-06-16
    • 2021-08-23
    • 2021-04-19
    • 2020-08-05
    • 1970-01-01
    • 2020-12-09
    • 1970-01-01
    相关资源
    最近更新 更多