Java 如何将控制器中的RequestBody定义为列表,我得到了500个错误

Java 如何将控制器中的RequestBody定义为列表,我得到了500个错误,java,spring-boot,Java,Spring Boot,我想将搜索输入作为列表传递,参考下面的代码和我尝试的负载,我得到了解析器错误 //searchinput中的代码 public class SearchInput { private List<SearchCriteria> criterias; } //控制器代码 @PostMapping("/searchhh") public List<Profile> findProfiles(@RequestBody SearchInput

我想将搜索输入作为列表传递,参考下面的代码和我尝试的负载,我得到了解析器错误

//searchinput中的代码

public class SearchInput {
    private List<SearchCriteria> criterias;

}
//控制器代码

@PostMapping("/searchhh")
    public List<Profile> findProfiles(@RequestBody SearchInput input) {
        List<SearchCriteria> criterias = input.getCriterias();
                System.out.println("criterias=" + criterias);
        
        return null;
    }

您是否尝试过此有效负载:

{
    "criterias" : [
        {
            "key": "g",
            "operation": "eq",
            "value": "m"
        },
        {
            "key": "name",
            "operation": "like",
            "value": "Rani"
        },
        {
            "key": "sh",
            "operation": "eq",
            "value": "Never"
        }
    ]
}

您作为请求主体传递的上述有效负载表示
SearchCriteria
对象的数组,因此您可以将该json直接解析到
List
中,而不需要
SearchInput

@PostMapping("/searchhh")
public List<Profile> findProfiles(@RequestBody List<SearchCriteria> input) {
            System.out.println("criterias=" + input);
    
    return null;
}
@PostMapping(/searchhh)
公共列表findProfiles(@RequestBody列表输入){
System.out.println(“criterias=“+input”);
返回null;
}

当然可以,兄弟!
{
    "criterias" : [
        {
            "key": "g",
            "operation": "eq",
            "value": "m"
        },
        {
            "key": "name",
            "operation": "like",
            "value": "Rani"
        },
        {
            "key": "sh",
            "operation": "eq",
            "value": "Never"
        }
    ]
}
@PostMapping("/searchhh")
public List<Profile> findProfiles(@RequestBody List<SearchCriteria> input) {
            System.out.println("criterias=" + input);
    
    return null;
}