如何在Swagger UI中从请求模型排除metaClass字段
metaClass Fields from Swagger UI Request Models Hey there! Let’s tackle those pesky metaClass fields cluttering up your Swagger UI request model. These usually pop up from Groovy objects or framework-generated classes, but we’ve got a few solid ways to get rid of them:
1. Use Jackson Annotations (Cleanest, Global or Per-Class)
This approach works across your entire application—so it’ll remove metaClass from both Swagger models and actual JSON payloads.
Per-Class Fix
Add the @JsonIgnoreProperties annotation directly to your DTO/request model class to exclude the metaClass field:
@JsonIgnoreProperties("metaClass") public class YourRequestModel { private List<MapEntry> Maps; private String output; // Getters, setters, and nested classes here }
Global Fix
If you want to exclude metaClass from all objects, create a Jackson configuration bean in Spring Boot:
@Configuration public class JacksonGlobalConfig { @Bean public ObjectMapper objectMapper() { ObjectMapper mapper = new ObjectMapper(); // Apply a mix-in to ignore metaClass across all objects mapper.addMixIn(Object.class, IgnoreMetaClassMixin.class); return mapper; } // Abstract mix-in class to mark metaClass as ignored private abstract static class IgnoreMetaClassMixin { @JsonIgnore abstract Object getMetaClass(); } }
2. Custom Plugin for Springfox Swagger 2
If you’re using Springfox (Swagger 2) and only want to hide metaClass in Swagger UI (not affect actual JSON), create a custom model plugin:
@Component public class RemoveMetaClassSwaggerPlugin implements ModelBuilderPlugin { @Override public void apply(ModelContext context) { // Remove metaClass from the current model's properties context.getModel().getProperties().remove("metaClass"); } @Override public boolean supports(DocumentationType documentationType) { // Only apply this to Swagger 2 documentation return documentationType == DocumentationType.SWAGGER_2; } }
3. Model Post-Processor for Springdoc OpenAPI 3
For Springdoc (OpenAPI 3), use a ModelPostProcessor to clean up nested models too:
@Component public class MetaClassCleaner implements ModelPostProcessor { @Override public void process(Model model, ModelContext modelContext) { // Remove top-level metaClass model.getProperties().remove("metaClass"); // Recursively remove metaClass from nested properties model.getProperties().values().forEach(property -> { if (property.getSchema() instanceof Schema<?> schema) { if (schema.getProperties() != null) { schema.getProperties().remove("metaClass"); } } }); } }
Quick Recommendation
Start with the Jackson annotation approach—it’s the most consistent, as it fixes both Swagger display and actual JSON handling. Use the Swagger-specific plugins only if you need to keep metaClass in your JSON but hide it from documentation.
内容的提问来源于stack exchange,提问作者Ankur Kunal

