fix(genapi): uint64 fields failing to be unmarshalled (#2492)
uint64 fields get marshalled into json by protobuf as strings, so we have to tell the json parser to look for strings when unmarshalling.
This commit is contained in:
3 files changed
+15
-3
No files matched your search
@@ -58,6 +58,7 @@ type fieldInfo struct {
|
||||
SubtypeNames []string
|
||||
Query bool
|
||||
SkipDefault bool
|
||||
JsonTags []string // Appended to a field's `json` tag (comma separated)
|
||||
}
|
||||
|
||||
type structInfo struct {
|
||||
@@ -832,6 +833,13 @@ var inputStructs = []*structInfo{
|
||||
{
|
||||
inProto: &sessions.Connection{},
|
||||
outFile: "sessions/connection.gen.go",
|
||||
fieldOverrides: []fieldInfo{
|
||||
// uint64 fields get marshalled by protobuf as strings, so we have
|
||||
// to tell the json parser that their json representation is a
|
||||
// string but they go into Go uint64 types.
|
||||
{Name: "BytesUp", JsonTags: []string{"string"}},
|
||||
{Name: "BytesDown", JsonTags: []string{"string"}},
|
||||
},
|
||||
},
|
||||
{
|
||||
inProto: &sessions.Session{},
|
||||
|
||||
@@ -85,6 +85,9 @@ func fillTemplates() {
|
||||
if override.FieldType != "" {
|
||||
field.FieldType = override.FieldType
|
||||
}
|
||||
if len(override.JsonTags) != 0 {
|
||||
field.JsonTags = override.JsonTags
|
||||
}
|
||||
in.generatedStructure.fields[i] = field
|
||||
}
|
||||
}
|
||||
@@ -578,6 +581,7 @@ func hasResponseType(types []string, typ string) bool {
|
||||
var structTemplate = template.Must(template.New("").Funcs(
|
||||
template.FuncMap{
|
||||
"hasResponseType": hasResponseType,
|
||||
"stringsjoin": strings.Join,
|
||||
},
|
||||
).Parse(
|
||||
fmt.Sprint(`// Code generated by "make api"; DO NOT EDIT.
|
||||
@@ -595,7 +599,7 @@ import (
|
||||
)
|
||||
|
||||
type {{ .Name }} struct { {{ range .Fields }}
|
||||
{{ .Name }} {{ .FieldType }} `, "`json:\"{{ .ProtoName }},omitempty\"`", `{{ end }}
|
||||
{{ .Name }} {{ .FieldType }} `, "`json:\"{{ .ProtoName }}{{ if ( ne ( len ( .JsonTags ) ) 0 ) }},{{ stringsjoin .JsonTags \",\" }}{{ end }},omitempty\"`", `{{ end }}
|
||||
{{ if ( not ( eq ( len ( .CreateResponseTypes ) ) 0 ) )}}
|
||||
response *api.Response
|
||||
{{ else if ( eq .Name "Error" ) }}
|
||||
|
||||
Reference in new issue
Block a user