【发布时间】:2020-05-28 19:30:18
【问题描述】:
我已将 spring boot 1.5.8 上的 jakson api 从 jakson 2.8.0 升级到 2.10.0,此后对象的映射表现不同。
当我在具有属性名 cityCode 的 springboot 控制器上传递请求正文时 示例 json
{
cityCode:DEL
}
当添加 jsonproperty 映射工作正常时
@JsonProperty("cityCode")
private String cityCode;
但是当我不添加@JsonProperty 注释时 它改为寻找 CityCode。 由于请求传递的json是
{
cityCode:DEL
}
它在评估
object{cityCode=null}
如果我需要在 Spring Boot 上添加任何属性,请告诉我
因为在我的大多数情况下,我不想将 @JsonProperty 注释添加到类字段
编辑:
我启用 log.level 来跟踪我看到了一些与 jackson 相关的消息
POJOPropertyBuilder - 无法实例化 jackson 2.6 对象。使用更高版本的jackson。
EDIT2:
添加示例模型类
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.util.List;
@JsonIgnoreProperties(ignoreUnknown = true)
@ApiModel(value = "CityRequest")
public class CityRequest implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty
private String cityCode;
@ApiModelProperty
private String cityName;
@ApiModelProperty
private String area;
@ApiModelProperty
private List<String> areas;
public String getCityCode() {
return cityCode;
}
public void setCityCode(String cityCode) {
this.cityCode = cityCode;
}
public String getCityName() {
return cityName;
}
public void setCityName(String cityName) {
this.cityName = cityName;
}
public String getArea() {
return area;
}
public void setArea(String area) {
this.area = area;
}
public List<String> getAreas() {
return areas;
}
public void setAreas(List<String> areas) {
this.areas = areas;
}
@Override
public String toString() {
return "CityRequest{" +
"cityCode='" + cityCode + '\'' +
", cityName='" + cityName + '\'' +
", area='" + area + '\'' +
", areas=" + areas +
'}';
}
}
控制器方法被传递为
@ApiParam(value = "This field specifies the list of requests", required = true)
@Valid @RequestBody(required = true) CityRequest cityRequest
【问题讨论】:
-
你的 POJO 有 getter 和 setter 吗?
-
是的 POJO 有 getter setter
-
Spring Boot 1.5 附带的官方 Spring 版本不支持 Jackson 2.10 或更高版本,您需要更新的 Spring 版本,因此需要更新的 Spring BOot 版本(2.2 或更高版本为 Jackson 2.10那里支持)。
-
嗨 @M.Deinum,感谢您的建议,将 spring boot 升级到 2.2 可以解决问题吗?
-
嗨@M.Deinum,我已经尝试将spring boot升级到2.2.6,但jackson映射仍然不起作用。
标签: spring-boot fasterxml