添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
强健的鸡蛋面  ·  MySQL Bugs: #89055: ...·  5 月前    · 
叛逆的灌汤包  ·  CCTV.com·  6 月前    · 
爱跑步的佛珠  ·  4. Surface Pro ...·  9 月前    · 
@Slf4j
@RestControllerAdvice
public class MyResponseBodyAdvice implements ResponseBodyAdvice {
    @Override
    public boolean supports(MethodParameter returnType, Class converterType) {
        return true;
    @Override
    public Object beforeBodyWrite(Object body, MethodParameter returnType,
                                  MediaType selectedContentType, Class selectedConverterType,
                                  ServerHttpRequest request, ServerHttpResponse response) {
        Response res = new Response();
        res.setData(body);
        return res;
@Setter
@Getter
@ToString
public class User {
    private String nickname;
    private String idCard;

Controller

@RestController
public class TestController {
    @GetMapping("/testObject")
    public User testObject() {
        User user = new User();
        user.setNickname("nickname");
        user.setIdCard("idcard");
        return user;

key 命名策略

UpperCamelCaseStrategy

首字母大写的驼峰方式,@JsonProperty优先级更高(msgHint没有受UpperCamelCaseStrategy影响)

"CodeInfo": 0, "Data": "Nickname": "nickname", "IdCard": "idcard" "msgHint": "success"

LowerCamelCaseStrategy

首字母小写的驼峰方式

"codeInfo": 0, "data": "nickname": "nickname", "idCard": "idcard" "msgHint": "success"

UpperSnakeCaseStrategy

大写及下划线拼接

"CODE_INFO": 0, "DATA": "NICKNAME": "nickname", "ID_CARD": "idcard" "msgHint": "success"

SnakeCaseStrategy

小写及下划线拼接

"code_info": 0, "data": "nickname": "nickname", "id_card": "idcard" "msgHint": "success"

LowerCaseStrategy

"codeinfo": 0, "data": "nickname": "nickname", "idcard": "idcard" "msgHint": "success"

KebabCaseStrategy

中划线拼接

"code-info": 0, "data": "nickname": "nickname", "id-card": "idcard" "msgHint": "success"

LowerDotCaseStrategy

小写及.拼接

"code.info": 0, "data": "nickname": "nickname", "id.card": "idcard" "msgHint": "success"

YAML 配置

spring:
  jackson:
    property-naming-strategy: com.fasterxml.jackson.databind.PropertyNamingStrategies.UpperCamelCaseStrategy
#    property-naming-strategy: com.fasterxml.jackson.databind.PropertyNamingStrategies.LowerCamelCaseStrategy
#    property-naming-strategy: com.fasterxml.jackson.databind.PropertyNamingStrategies.UpperSnakeCaseStrategy
#    property-naming-strategy: com.fasterxml.jackson.databind.PropertyNamingStrategies.SnakeCaseStrategy
#    property-naming-strategy: com.fasterxml.jackson.databind.PropertyNamingStrategies.LowerCaseStrategy
#    property-naming-strategy: com.fasterxml.jackson.databind.PropertyNamingStrategies.KebabCaseStrategy
#    property-naming-strategy: com.fasterxml.jackson.databind.PropertyNamingStrategies.LowerDotCaseStrategy

Java 配置

@Configuration
public class ObjectMapperConfig {
    @Bean
    public ObjectMapper objectMapper() {
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.setPropertyNamingStrategy(PropertyNamingStrategies.UpperCamelCaseStrategy.INSTANCE);
        return objectMapper;

使用@JsonNaming注解指定命名策略。

@Setter
@Getter
@Data
@JsonNaming(PropertyNamingStrategies.UpperCamelCaseStrategy.class)
public class Response {
    private int codeInfo;
    private Object data;
    @JsonProperty("msgHint")
    private String msgHint = "success";

PropertyNamingStrategy不适用于Map集合。

PropertyNamingStrategy not work on Map #2559

Views: 491 · Posted: 2024-09-18 ————&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbspEND&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp————