Change also fixed64 format to be a number in JSON output

This commit is contained in:
Eero Norri 2024-09-20 13:42:06 +03:00
parent 9233a902f4
commit ba917c03ca
2 changed files with 14 additions and 18 deletions

View File

@ -302,18 +302,14 @@ func (e encoder) marshalSingular(val protoreflect.Value, fd protoreflect.FieldDe
return errors.InvalidUTF8(string(fd.FullName()))
}
case protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind:
case protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind, protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind:
// 64-bit and 32-bit integers are written out as JSON number.
e.WriteInt(val.Int())
case protoreflect.Uint64Kind, protoreflect.Uint32Kind, protoreflect.Fixed32Kind:
case protoreflect.Uint64Kind, protoreflect.Fixed64Kind, protoreflect.Uint32Kind, protoreflect.Fixed32Kind:
// 64-bit and 32-bit unsigned integers are written out as JSON number.
e.WriteUint(val.Uint())
case protoreflect.Sfixed64Kind, protoreflect.Fixed64Kind:
// 64-bit fixed are written out as JSON string.
e.WriteString(val.String())
case protoreflect.FloatKind:
// Encoder.WriteFloat handles the special numbers NaN and infinites.
e.WriteFloat(val.Float(), 32)

View File

@ -80,9 +80,9 @@ func TestMarshal(t *testing.T) {
"optSint32": 0,
"optSint64": 0,
"optFixed32": 0,
"optFixed64": "0",
"optFixed64": 0,
"optSfixed32": 0,
"optSfixed64": "0",
"optSfixed64": 0,
"optFloat": 0,
"optDouble": 0,
"optBytes": "",
@ -141,7 +141,7 @@ func TestMarshal(t *testing.T) {
"optUint64": 3735928559,
"optSint32": -1001,
"optSint64": -65535,
"optFixed64": "64",
"optFixed64": 64,
"optSfixed32": -32,
"optFloat": 1.02,
"optDouble": 1.234,
@ -741,7 +741,7 @@ func TestMarshal(t *testing.T) {
},
want: `{
"reqBool": false,
"reqSfixed64": "0",
"reqSfixed64": 0,
"reqDouble": 1.23,
"reqString": "hello",
"reqEnum": "ONE"
@ -759,7 +759,7 @@ func TestMarshal(t *testing.T) {
},
want: `{
"reqBool": false,
"reqSfixed64": "0",
"reqSfixed64": 0,
"reqDouble": 1.23,
"reqString": "hello",
"reqEnum": "ONE"
@ -776,7 +776,7 @@ func TestMarshal(t *testing.T) {
},
want: `{
"reqBool": false,
"reqSfixed64": "0",
"reqSfixed64": 0,
"reqDouble": 1.23,
"reqString": "hello",
"reqEnum": "ONE",
@ -1655,9 +1655,9 @@ func TestMarshal(t *testing.T) {
"sSint32": 0,
"sSint64": 0,
"sFixed32": 0,
"sFixed64": "0",
"sFixed64": 0,
"sSfixed32": 0,
"sSfixed64": "0",
"sSfixed64": 0,
"sFloat": 0,
"sDouble": 0,
"sBytes": "",
@ -1966,9 +1966,9 @@ func TestMarshal(t *testing.T) {
"sSint32": 0,
"sSint64": 0,
"sFixed32": 0,
"sFixed64": "0",
"sFixed64": 0,
"sSfixed32": 0,
"sSfixed64": "0",
"sSfixed64": 0,
"sFloat": 0,
"sDouble": 0,
"sBytes": "",
@ -2232,9 +2232,9 @@ func TestMarshal(t *testing.T) {
"sSint32": 0,
"sSint64": 0,
"sFixed32": 0,
"sFixed64": "0",
"sFixed64": 0,
"sSfixed32": 0,
"sSfixed64": "0",
"sSfixed64": 0,
"sFloat": 0,
"sDouble": 0,
"sBytes": "",