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
 		}