![](/img/trans.png)
[英]CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES not reflected in swagger.json
[英]How to convert camel case to lower case with underscores in a REST API?
我正在使用 Quarkus 和 Microprofile OpenAPI 到 REST API 中的 map 实体。 我可以通过以下方式将我的驼峰命名属性转换为带下划线的小写:
@Schema(name = "first_name")
private String firstName;
然而,这很不方便,因为我必须在整个项目的任何地方都这样做。
问题:有没有一种方法可以自动为所有属性执行此操作,而无需在注释中指定映射?
我浏览了 Quarkus 和 Microprofile 的文档,但还没有找到它是如何实现的。
如果您想将此行为设为默认行为,则必须在 object 映射器中进行配置,该映射器负责将对象序列化/反序列化为 json。 在 Quarkus 中,您可以使用 Jackson 或 JsonB 进行 object 映射。
对于 Jackson,您可以使用要设置为SNAKE_CASE
的PropertyNamingStrategy来控制字段名称的行为。 要全局设置,请创建一个ObjectMapperCustomizer
,如下所示:
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.PropertyNamingStrategy;
import io.quarkus.jackson.ObjectMapperCustomizer;
import javax.inject.Singleton;
@Singleton
public class ObjectMapperConfig implements ObjectMapperCustomizer {
@Override
public void customize(ObjectMapper objectMapper) {
objectMapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE)
}
}
您可以控制序列化的更多方面,例如在反序列化、日期格式化等期间忽略未知道具。
您需要对quarkus-resteasy-jackson
有一个部门:
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-resteasy-jackson</artifactId>
</dependency>
如果您想使用 JsonB ( quarkus-resteasy-jsonb
),那么您可以尝试使用以下JsonbConfigCustomizer
import io.quarkus.jsonb.JsonbConfigCustomizer;
import javax.inject.Singleton;
import javax.json.bind.JsonbConfig;
import javax.json.bind.config.PropertyNamingStrategy;
@Singleton
public class JsonBCustomizer implements JsonbConfigCustomizer {
public void customize(JsonbConfig config) {
config.withPropertyNamingStrategy(PropertyNamingStrategy.LOWER_CASE_WITH_UNDERSCORES);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.