Skip to content

Commit 2360cfa

Browse files
committed
Merge pull request google#863 from nykolaslima/explicit-null-in-json
handle explicit null values in JSON
2 parents bb451ea + 2928b3e commit 2360cfa

File tree

2 files changed

+9
-2
lines changed

2 files changed

+9
-2
lines changed

proto/src/main/java/com/google/gson/protobuf/ProtoTypeAdapter.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -262,8 +262,8 @@ public GeneratedMessage deserialize(JsonElement json, Type typeOfT,
262262
String jsonFieldName =
263263
getCustSerializedName(fieldDescriptor.getOptions(), fieldDescriptor.getName());
264264

265-
if (jsonObject.has(jsonFieldName)) {
266-
JsonElement jsonElement = jsonObject.get(jsonFieldName);
265+
JsonElement jsonElement = jsonObject.get(jsonFieldName);
266+
if (jsonElement != null && !jsonElement.isJsonNull()) {
267267
// Do not reuse jsonFieldName here, it might have a custom value
268268
Object fieldValue;
269269
if (fieldDescriptor.getType() == ENUM_TYPE) {

proto/src/test/java/com/google/gson/protobuf/functional/ProtosWithPrimitiveTypesTest.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,4 +66,11 @@ public void testDeserializeProto() {
6666
assertEquals("foo", proto.getMsg());
6767
assertEquals(3, proto.getCount());
6868
}
69+
70+
public void testDeserializeWithExplicitNullValue() {
71+
SimpleProto proto = gson.fromJson("{msg:'foo',count:null}", SimpleProto.class);
72+
assertEquals("foo", proto.getMsg());
73+
assertEquals(0, proto.getCount());
74+
}
75+
6976
}

0 commit comments

Comments
 (0)