Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将复杂的java对象作为JSON传递给API控制器_Java_Spring - Fatal编程技术网

如何将复杂的java对象作为JSON传递给API控制器

如何将复杂的java对象作为JSON传递给API控制器,java,spring,Java,Spring,我在这个小问题上已经两天了 我有一个对象userFilter,其属性是经典用户参数(名称、用户名、年龄等) 每个属性的类型都是另一个自定义对象:RequestParameter 当我试图用Spring Boot的@RequestParameter注释将json传递给我的api控制器(方法:getAll)时,控制器没有用发送的属性填充任何UserFilter对象,事实上,如果我记录请求的用户,我只会得到一个空列表:[] 代码如下: 公共类控制器{ @施工后 静态void init(){ 函数toM

我在这个小问题上已经两天了

我有一个对象userFilter,其属性是经典用户参数(名称、用户名、年龄等)

每个属性的类型都是另一个自定义对象:RequestParameter

当我试图用Spring Boot的@RequestParameter注释将json传递给我的api控制器(方法:getAll)时,控制器没有用发送的属性填充任何UserFilter对象,事实上,如果我记录请求的用户,我只会得到一个空列表:[]

代码如下:

公共类控制器{
@施工后
静态void init(){
函数toModel=(pojo)->{
UserModel model=新的UserModel();
setId(pojo.getId());
model.setName(pojo.getName());
model.setLastname(pojo.getLastname());
model.setAge(pojo.getAge());
model.setAddress(pojo.getAddress());
model.setUsername(pojo.getUsername());
model.setEmail(pojo.getEmail());
model.setPassword(pojo.getPassword());
model.setGender(pojo.getGender());
model.setProfilePic(pojo.getProfilePic());
model.setRegistrationDate(pojo.getRegistrationDate());
model.setLastLogin(pojo.getLastLogin());
model.setFriends(pojo.getFriends());
model.setPosts(pojo.getPosts());
model.setPublicProfile(pojo.isPublicProfile());
收益模型;
};
put(UserPojo.class、UserModel.class、toModel);
}
@自动连线
用户存储库回购;
@GetMapping(“/{Id}”)
公共UserModel getUserById(@PathVariable整数Id){
返回Converter.convert(repo.getUser(Id),UserModel.class);
}
@DeleteMapping(“/{Id}”)
public ResponseEntity deleteUser(@PathVariable整数Id){
返回ResponseEntity.noContent().build();
}
@PutMapping()
public UserModel updateUser(@RequestBody UserPojo user){
返回Converter.convert(repo.save(user)、UserModel.class);
}
@邮戳(“”)
public UserModel createUser(@Valid@RequestBody UserPojo user){
返回Converter.convert(repo.createUser(user),UserModel.class);
}
@后映射(“/list”)
公共列表getAll(@RequestBody UsersFilter param){
返回Converter.convert(repo.getAll(param.toParam()),UserModel.class);
}
}

公共类UsersFilter实现IQueryParamConverter{
请求参数id;
请求参数名称;
请求参数lastname;
年龄;
请求参数用户名;
请求参数电子邮件;
性别;
公共用户过滤器(){
}
}
公共类请求参数{
私有列表值;
私人经营者;
公共列表getValue(){
返回值;
}
公共无效设置值(列表值){
这个值=值;
}
公共运营商getOperator(){
返回运算符;
}
公共无效设置运算符(运算符运算符){
this.operator=操作员;
};
}
JSON示例:

{
“id”:{
“价值”:[
"1"
],
“op”:“EQ”
}
}

非常感谢

您忘记了UsersFilter:)中所有属性的getter和setter。 因为它是一个整数值数组,所以不要使用引号。 使用运算符(而不是op:)调用属性运算符。 使用getter/setter和这个json示例,对我来说很有用:

{
  "id": {
    "value": [
      1
    ],
    "operator": "EQ"
  }
}

请您也插入运营商实施?非常感谢!这就是问题所在!!!