commit | 1c7462c1baab35e8c0ee50f4db30ee266902a21b | [log] [tgz] |
---|---|---|
author | Herbie Ong <herbie@google.com> | Fri Mar 22 17:56:55 2019 -0700 |
committer | Herbie Ong <herbie@google.com> | Mon Mar 25 23:01:49 2019 +0000 |
tree | 3099b5a35ea732d703fae022834ae32668b628c9 | |
parent | a3421952acf1d6b060d2dd251463b1946732d6bb [diff] [blame] |
encoding/jsonpb: fix encoding of empty google.protobuf.Value Description of message Value states: `Value` represents a dynamically typed value which can be either null, a number, a string, a boolean, a recursive struct value, or a list of values. A producer of value is expected to set one of that variants, absence of any variant indicates an error. https://github.com/protocolbuffers/protobuf/blob/3.7.x/src/google/protobuf/struct.proto#L57-L60 Previous implementation was following C++ lib behavior. Change-Id: Id51792e2fc8cc465a05a978e63410d3b6802b522 Reviewed-on: https://go-review.googlesource.com/c/protobuf/+/168901 Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
diff --git a/encoding/jsonpb/encode.go b/encoding/jsonpb/encode.go index a9ca581..9bfadda 100644 --- a/encoding/jsonpb/encode.go +++ b/encoding/jsonpb/encode.go
@@ -111,14 +111,8 @@ continue } - // An empty google.protobuf.Value should NOT be marshaled out. - // Hence need to check ahead for this. - val := knownFields.Get(num) - if isEmptyKnownValue(val, fd.MessageType()) { - continue - } - name := fd.JSONName() + val := knownFields.Get(num) if err := e.WriteName(name); !nerr.Merge(err) { return err }