You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Quarkus集成OpenAPI后Swagger UI如何全局设置MongoDB ObjectId输出格式

Quarkus OpenAPI 全局配置MongoDB ObjectId输出为字符串格式方案

你需要同时配置Jackson序列化规则和OpenAPI类型映射,即可同时满足接口实际返回、Swagger UI展示的双重要求:

1. 配置全局JSON序列化规则

  • 首先自定义ObjectId的序列化/反序列化器,也可以直接引入官方提供的bson4jackson模块,这里推荐自定义实现更轻量:
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.module.SimpleModule;
import org.bson.types.ObjectId;
import io.quarkus.jackson.ObjectMapperCustomizer;
import javax.ws.rs.ext.Provider;
import java.io.IOException;

@Provider
public class ObjectIdJacksonConfig implements ObjectMapperCustomizer {
    @Override
    public void customize(ObjectMapper mapper) {
        SimpleModule objectIdModule = new SimpleModule();
        // 序列化:将ObjectId转为十六进制字符串输出
        objectIdModule.addSerializer(ObjectId.class, new JsonSerializer<ObjectId>() {
            @Override
            public void serialize(ObjectId value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
                gen.writeString(value.toHexString());
            }
        });
        // 反序列化:将传入的字符串转为ObjectId对象
        objectIdModule.addDeserializer(ObjectId.class, new JsonDeserializer<ObjectId>() {
            @Override
            public ObjectId deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
                return new ObjectId(p.getValueAsString());
            }
        });
        mapper.registerModule(objectIdModule);
    }
}

2. 配置OpenAPI类型映射,修复Swagger UI展示

直接在application.properties中添加如下配置即可,不需要额外代码:

# 将ObjectId类型映射为OpenAPI的string类型
mp.openapi.schema.org.bson.types.ObjectId.type=string
# 可选:指定格式标识
mp.openapi.schema.org.bson.types.ObjectId.format=objectid
# 自定义Swagger UI上的示例值
mp.openapi.schema.org.bson.types.ObjectId.example=61338f5b47bfc65136b5de30

配置完成后重启应用,Swagger UI就会将ObjectId类型的字段展示为字符串格式,接口实际返回也会是你预期的十六进制字符串格式。


内容的提问来源于stack exchange,提问作者denis doni

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 11:54:03