我想将搜索输入作为列表传递,请参阅我尝试过的以下代码和有效负载,我遇到解析器错误。
//搜索输入中的代码
public class SearchInput {
private List<SearchCriteria> criterias;
}
//搜索条件中的代码
public class SearchCriteria {
private String key;
private String operation;
private String value;
}
// Controller 代码
@PostMapping("/searchhh")
public List<Profile> findProfiles(@RequestBody SearchInput input) {
List<SearchCriteria> criterias = input.getCriterias();
System.out.println("criterias=" + criterias);
return null;
}
//我厌倦的有效负载
URL:
http://localhost:5555/matrimony/api/v1/profiles/searchhh
Request body:
[
{
"key": "g",
"operation": "eq",
"value": "m"
},
{
"key": "name",
"operation": "like",
"value": "Rani"
},
{
"key": "sh",
"operation": "eq",
"value": "Never"
}
]
Response:
{
"message": "JSON parse error: Cannot deserialize instance of `com.model.SearchInput` out of START_ARRAY token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `com.model.SearchInput` out of START_ARRAY token\n at [Source: (PushbackInputStream); line: 1, column: 1]",
"status": 500,
"timestamp": "2021-01-21T11:31:48.228796"
}
最佳答案
您是否尝试过此有效负载:
{
"criterias" : [
{
"key": "g",
"operation": "eq",
"value": "m"
},
{
"key": "name",
"operation": "like",
"value": "Rani"
},
{
"key": "sh",
"operation": "eq",
"value": "Never"
}
]
}
关于java - 如何在 Controller 中将 RequestBody 定义为列表,我收到 500 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65822124/