与腾讯即时通讯IM对接、腾讯的请求格式如下:
于是我在项目后端编写了一个实体类用来接收参数
@Data
public class ChatRoomDto implements Serializable {
/**
* 回调命令
*/
private String CallbackCommand;
/**
* 群组号
*/
private String GroupId;
/**
* 群组类型
*/
private String Type;
/**
* 入群方式:Apply(申请入群);Invited(邀请入群)
*/
private String JoinType;
/**
*操作者成员
*/
private String Operator_Account;
/**
* 新入群成员列表
*/
private List<NewMember> NewMemberList;
/**
* 毫秒级别,事件触发时间戳
*/
private String EventTime;
@Data
class NewMember{
private String Member_Account;
}
}
Controller代码如下:
当我用apifox调试时 发现接收的参数居然全部为null 请求的JSON数据如下:
当我debug时 接收到的参数:
当时检查了字段是否对应、注解之类的问题 发现都没有漏的地方 翻阅资料后将实体类改成如下 则解决了这个问题 (其实可以通过map或者JSONObject接收参数、但是我觉得实体比这些方便一点 所以就一直搜了一下解决办法)
通过@JsonProperty注解来解决问题 如果引用了内部类的话需要把内部类改成静态内部类,内部非静态类无法实例化
@Data
public class ChatRoomDto implements Serializable {
/**
* 回调命令
*/
@JsonProperty(value = "CallbackCommand")
private String callbackCommand;
/**
* 群组号
*/
@JsonProperty(value = "GroupId")
private String groupId;
/**
* 群组类型
*/
@JsonProperty(value = "Type")
private String type;
/**
* 入群方式:Apply(申请入群);Invited(邀请入群)
*/
@JsonProperty(value = "JoinType")
private String joinType;
/**
*操作者成员
*/
@JsonProperty(value = "Operator_Account")
private String operator_Account;
/**
* 新入群成员列表
*/
@JsonProperty(value = "NewMemberList")
private List<NewMember> newMemberList;
/**
* 毫秒级别,事件触发时间戳
*/
@JsonProperty(value = "EventTime")
private String eventTime;
@Data
static class NewMember{
@JsonProperty(value = "Member_Account")
private String member_Account;
}
}