今天在做接口测试中发现了一个问题,就是我在对象中多加了一个list去传参。因为我涉及一篇文章中有多张图片,我把多张图片放到一个list去传。
1、问题描述
{
"logTitle":"今天是星期五的日常",
"logDescription":"这是我的狗子非常好看,我带他们出去玩了。环境很好。你们觉得呢?",
"userId":"176830",
"tMediaFilesBoList":[
{
"filePath":"https://wwww.moyan.store"
},
{
"filePath":"https://wwww.moyan.storehhahahaha"
}
]
}
这个我是通过JSON模式进行传输的,我的实体类的是通过@DATA的注解完成的set和get方法的、以下是我的代码示例:
@Data
public class TPetDailyLogsBo implements Serializable {
/**
* ID
*/
private Long logId;
/**
* 时间
*/
private Date logDate;
/**
* 笔记标题
*/
private String logTitle;
/**
* 笔记内容
*/
private String logDescription;
/**
* 用户id
*/
private Long userId;
/**
* 发布时间
*/
private Date logTimestamp;
private List<TMediaFiles> tMediaFilesBoList;
在我发布请求的时候,在Controller中接受的参数我用debug拿到的数据list是空的,如下图
这时候我通过浏览资料发现,而拿不到参数的原因就出现在这里,set方法不对,导致序列化的时候,值设置不进去。大家可以看我的对象中的属性值没有按照正常的规范去写的,有的属性开头是大写。
2、解决办法
1.解决方法一
给现有的list新增get和set方法,就可以拿到参数了
private List<TMediaFiles> tMediaFilesBoList;
public List<TMediaFiles> gettMediaFilesBoList() {
return tMediaFilesBoList;
}
public void settMediaFilesBoList(List<TMediaFiles> tMediaFilesBoList) {
this.tMediaFilesBoList = tMediaFilesBoList;
}
我已验证参数,是没问题,希望可以帮到大家
2.解决方法二
如果你真的就想开头大写的,我就任性,就想这么写这么办?只能手动生成一下set方法,然后在set方法上写如下注解,这样就可以设置值了。
@JsonProperty(value = "StrTalker")
如果解决了你的问题。
点个赞吧。