From 1fb0de79b4b930e8c1880d32696dd0f776829953 Mon Sep 17 00:00:00 2001 From: "liucheng.zhang" Date: Wed, 27 Mar 2019 10:49:00 +0800 Subject: [PATCH] fix: #13622 gson should not serialize null value when set `spring.gson.serialize-nulls=false` --- .../autoconfigure/gson/GsonAutoConfiguration.java | 3 ++- .../gson/GsonAutoConfigurationTests.java | 11 ++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/gson/GsonAutoConfiguration.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/gson/GsonAutoConfiguration.java index 784e18a9db68..6494f14ce764 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/gson/GsonAutoConfiguration.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/gson/GsonAutoConfiguration.java @@ -84,7 +84,8 @@ public void customize(GsonBuilder builder) { .toCall(builder::generateNonExecutableJson); map.from(properties::getExcludeFieldsWithoutExposeAnnotation) .toCall(builder::excludeFieldsWithoutExposeAnnotation); - map.from(properties::getSerializeNulls).toCall(builder::serializeNulls); + map.from(properties::getSerializeNulls).whenTrue() + .toCall(builder::serializeNulls); map.from(properties::getEnableComplexMapKeySerialization) .toCall(builder::enableComplexMapKeySerialization); map.from(properties::getDisableInnerClassSerialization) diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/gson/GsonAutoConfigurationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/gson/GsonAutoConfigurationTests.java index 3a3fda5bea0c..ab3029d0778d 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/gson/GsonAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/gson/GsonAutoConfigurationTests.java @@ -80,7 +80,7 @@ public void excludeFieldsWithoutExposeAnnotation() { } @Test - public void serializeNulls() { + public void serializeNullsTrue() { this.contextRunner.withPropertyValues("spring.gson.serialize-nulls:true") .run((context) -> { Gson gson = context.getBean(Gson.class); @@ -88,6 +88,15 @@ public void serializeNulls() { }); } + @Test + public void serializeNullsFalse() { + this.contextRunner.withPropertyValues("spring.gson.serialize-nulls:false") + .run((context) -> { + Gson gson = context.getBean(Gson.class); + assertThat(gson.serializeNulls()).isFalse(); + }); + } + @Test public void enableComplexMapKeySerialization() { this.contextRunner