diff --git a/trpc-core/src/main/java/com/tencent/trpc/core/utils/JsonUtils.java b/trpc-core/src/main/java/com/tencent/trpc/core/utils/JsonUtils.java index c33f3b9c90..e53e99d6d3 100644 --- a/trpc-core/src/main/java/com/tencent/trpc/core/utils/JsonUtils.java +++ b/trpc-core/src/main/java/com/tencent/trpc/core/utils/JsonUtils.java @@ -16,6 +16,7 @@ import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.JavaType; import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; import com.tencent.trpc.core.exception.ErrorCode; import com.tencent.trpc.core.exception.TRpcException; import com.tencent.trpc.core.logger.Logger; @@ -39,6 +40,8 @@ public class JsonUtils { objectMapper.setSerializationInclusion(Include.NON_NULL); // Do not throw an error when deserializing if there are no corresponding properties objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES); + // Do not throw an error when serializing if there are no public fields + objectMapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS); } /** diff --git a/trpc-core/src/test/java/com/tencent/trpc/core/utils/JsonUtilsTest.java b/trpc-core/src/test/java/com/tencent/trpc/core/utils/JsonUtilsTest.java index 9add8f18e9..fb4a528f78 100644 --- a/trpc-core/src/test/java/com/tencent/trpc/core/utils/JsonUtilsTest.java +++ b/trpc-core/src/test/java/com/tencent/trpc/core/utils/JsonUtilsTest.java @@ -32,6 +32,7 @@ public class JsonUtilsTest { private static final String JSON = "{\"test\":123}"; private static final String JSON_LIST = "[{\"test\":123},{\"test\":123}]"; private static final String ERROR_JSON = "{\"test\":123,A}"; + private static final String EMPTY_JSON = "{}"; @Test public void testCopy() { @@ -184,6 +185,12 @@ public void testConvertValue() { } + @Test + public void testEmptyBeanSerial() { + TestEmptyBean testEmptyBean = new TestEmptyBean(10); + Assert.assertEquals(EMPTY_JSON, JsonUtils.toJson(testEmptyBean)); + } + public static class TestObj { private int testA; @@ -232,4 +239,14 @@ public void setData(String data) { this.data = data; } } + + public static class TestEmptyBean { + + // without public getter method + private int field; + + public TestEmptyBean(int field) { + this.field = field; + } + } }