问题:解决sprigboot项目get请求中有下划线的入参参数,如:first_name,希望在项目中将下划线格式转成firstName,用@JsonProperty注解发现失效问题

1.核查:@JsonProperty注解对应包是否正确

正确包:import com.fasterxml.jackson.annotation.JsonProperty;

如果使用jar正确,还是无效,往下看

2.在实体类中重写参数的set方法

例子:

实体类:

package com.iterge.lph_test.entity;

import lombok.AccessLevel;
import lombok.Data;
import lombok.experimental.FieldDefaults;

/**
 * Create by LPH 2021/8/3
 */
@Data
@FieldDefaults(level = AccessLevel.PRIVATE)
public class UserReq {
    Long id;
    String name;
    String firstName;
}

Controller:

package com.iterge.lph_test.controller;

import com.iterge.lph_test.entity.UserReq;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author liuph
 * @date 2023/8/10 15:01:30
 */

@RestController
@RequestMapping("/test")
@Slf4j
public class ParamController {

    @GetMapping("/param/test")
    public String params(UserReq req){
        log.info("入参数:{}",req);
        return req.toString();
    }

}

结果:

修改后:

实体类:

package com.iterge.lph_test.entity;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AccessLevel;
import lombok.Data;
import lombok.experimental.FieldDefaults;

/**
 * Create by LiuPH 2021/8/3
 */
@Data
@FieldDefaults(level = AccessLevel.PRIVATE)
public class UserReq {
    Long id;
    String name;
    @JsonProperty("first_name")
    String firstName;

    public void setFirst_name(String name){
        this.firstName = name;
    }
}

 运行结果:

 over~

GitHub 加速计划 / js / json
41.72 K
6.61 K
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:1 个月前 )
960b763e 4 个月前
8c391e04 6 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐