Java实体:刚开始mId
属性没有添加@JsonProperty
注解
@TableName(value = "t_vip_match")
@Data
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
public class VipMatch implements Serializable {
/**
* 赛事报名表主键
*/
@TableId(type = IdType.AUTO)
private Integer vMId;
/**
* 会员表主键
*/
private Integer vId;
/**
* 赛事表主键
*/
@JsonProperty("mId")
private Integer mId;
/**
* 报名人姓名
*/
private String name;
/**
* 报名人手机号
*/
private String phone;
/**
* 已报名的赛事列表
*/
@TableField(exist = false)
private List<Match> matchList;
/**
* 性别
*/
private Integer sex;
@TableField(exist = false)
private static final long serialVersionUID = 1L;
}
接口:
@PostMapping("/signUpMatch")
public synchronized ResponseResult<Object> signUpMatch(@RequestBody VipMatch vipMatch, @RequestParam("openid") String openid)
请求JSON格式:
{
"name": "张三",
"sex": 0,
"phone": "12345678912",
"mId": 95
}
实体VipMatch不能获取到JSON对象中的”mId“字段
原因:百度之后发现一个跟我差不多的案列,他说是JSON对象需要遵信驼峰命名规则
但是我这个应该是遵循驼峰命名的吧我也不太清楚(驼峰命名的解释是:多单词组成时,第一个字母的首字母小写,第二个字母开始每个字母首字母大写:xxxYyyZzz(小驼峰命名法))
有可能我这个第一个字母不能被当作一个单词来对待?
于是在实体对应的字段加上@JsonProperty
注解再次测试,结果就能成功获取到该字段对应的值了
@JsonProperty
- 使用方法
@JsonProperty注解主要用于实体类的属性上
- 作用
作用可以简单的理解为在反序列化的时候给属性重命名(多一个名字来识别)
-
注意事项
-
使用JSON.toJsonString的时候实体类需要有getter方法,否则会输出{}
-
@requestBody注解需要在post请求下才能正常使用.
-