Skip to content

Commit 6757437

Browse files
committed
protoc-gen-go: Add JSON tags to oneof values and members
Oneof values should include json tags to use proper camelCase name and can be safely omitted when we're handling the interface.
1 parent 2087447 commit 6757437

File tree

19 files changed

+130
-123
lines changed

19 files changed

+130
-123
lines changed

cmd/protoc-gen-go/internal_gengo/main.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -378,6 +378,7 @@ func genMessageField(g *protogen.GeneratedFile, f *fileInfo, m *messageInfo, fie
378378

379379
tags := structTags{
380380
{"protobuf_oneof", string(oneof.Desc.Name())},
381+
{"json", string(oneof.Desc.JSONName()) + ",omitempty"},
381382
}
382383
if m.isTracked {
383384
tags = append(tags, gotrackTags...)
@@ -812,6 +813,7 @@ func genMessageOneofWrapperTypes(g *protogen.GeneratedFile, f *fileInfo, m *mess
812813
goType, _ := fieldGoType(g, f, field)
813814
tags := structTags{
814815
{"protobuf", fieldProtobufTagValue(field)},
816+
{"json", string(field.Desc.JSONName())},
815817
}
816818
if m.isTracked {
817819
tags = append(tags, gotrackTags...)

cmd/protoc-gen-go/testdata/comments/comments.pb.go

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/protoc-gen-go/testdata/fieldnames/fieldnames.pb.go

Lines changed: 7 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/protoc-gen-go/testdata/import_public/sub/a.pb.go

Lines changed: 6 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/protoc-gen-go/testdata/issue780_oneof_conflict/test.pb.go

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/protoc-gen-go/testdata/proto2/fields.pb.go

Lines changed: 23 additions & 23 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/protoc-gen-go/testdata/retention/retention.pb.go

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/filedesc/desc.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -351,6 +351,7 @@ func (od *Oneof) Options() protoreflect.ProtoMessage {
351351
func (od *Oneof) Fields() protoreflect.FieldDescriptors { return &od.L1.Fields }
352352
func (od *Oneof) Format(s fmt.State, r rune) { descfmt.FormatDesc(s, r, od) }
353353
func (od *Oneof) ProtoType(protoreflect.OneofDescriptor) {}
354+
func (od *Oneof) JSONName() string { return strs.JSONCamelCase(string(od.Name())) }
354355

355356
type (
356357
Extension struct {

0 commit comments

Comments
 (0)