diff --git a/src/main/java/io/getstream/chat/java/services/framework/DefaultClient.java b/src/main/java/io/getstream/chat/java/services/framework/DefaultClient.java index a975e7d2a..14302b5c8 100644 --- a/src/main/java/io/getstream/chat/java/services/framework/DefaultClient.java +++ b/src/main/java/io/getstream/chat/java/services/framework/DefaultClient.java @@ -104,8 +104,9 @@ private Retrofit buildRetrofitClient() { return chain.proceed(request); }); final ObjectMapper mapper = new ObjectMapper(); - // do not encode getter methods in json - mapper.setVisibility(PropertyAccessor.GETTER, JsonAutoDetect.Visibility.NONE); + // Use field-based serialization but respect @JsonProperty and @JsonAnyGetter annotations + mapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.NONE); + mapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY); mapper.configure( DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, hasFailOnUnknownProperties(extendedProperties)); diff --git a/src/test/java/io/getstream/chat/java/AppTest.java b/src/test/java/io/getstream/chat/java/AppTest.java index 458753a57..0457c8a9d 100644 --- a/src/test/java/io/getstream/chat/java/AppTest.java +++ b/src/test/java/io/getstream/chat/java/AppTest.java @@ -279,7 +279,8 @@ void whenUpdatingAppSettingsWithPendingMessageEventHook_thenNoException() throws void whenEncodingAppConfig_thenNoNullFields() { var appConfig = App.update().internalBuild(); final ObjectMapper mapper = new ObjectMapper(); - mapper.setVisibility(PropertyAccessor.GETTER, JsonAutoDetect.Visibility.NONE); + mapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.NONE); + mapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY); String json = Assertions.assertDoesNotThrow(() -> mapper.writeValueAsString(appConfig));