@@ -91,10 +91,7 @@ func (b responseBuilder) buildField(output io.Writer, field *descriptorpb.FieldD
9191 fieldType := strings .ToLower (strings .TrimPrefix (field .GetType ().String (), "TYPE_" ))
9292
9393 if field .GetType () == descriptorpb .FieldDescriptorProto_TYPE_MESSAGE {
94- fmt .Fprintln (output )
95- defer fmt .Fprintln (output )
96- b .buildMessage (output , b .messageTypes [field .GetTypeName ()], level )
97- fieldType = getShortTypeName (field .GetTypeName ())
94+ fieldType = b .buildFieldType (output , field .GetTypeName (), level )
9895 }
9996
10097 fmt .Fprint (output , buildIndent (level ))
@@ -104,10 +101,21 @@ func (b responseBuilder) buildField(output io.Writer, field *descriptorpb.FieldD
104101 fmt .Fprintf (output , "%s %s = %d;\n " , fieldType , field .GetName (), field .GetNumber ())
105102}
106103
107- func buildIndent (level int ) string {
108- return strings .Repeat (" " , level )
109- }
104+ func (b responseBuilder ) buildFieldType (output io.Writer , typeName string , level int ) string {
105+ if typeName , ok := wktMapping [typeName ]; ok && b .hasJSONEncoding () {
106+ return typeName
107+ }
110108
111- func getShortTypeName (typeName string ) string {
109+ fmt .Fprintln (output )
110+ b .buildMessage (output , b .messageTypes [typeName ], level )
111+ fmt .Fprintln (output )
112112 return typeName [strings .LastIndexByte (typeName , '.' )+ 1 :]
113113}
114+
115+ func (b responseBuilder ) hasJSONEncoding () bool {
116+ return strings .Contains (b .request .GetParameter (), "encoding=json" )
117+ }
118+
119+ func buildIndent (level int ) string {
120+ return strings .Repeat (" " , level )
121+ }
0 commit comments