我有一个@PostMapping
,允许用户发送一个普通的json
地图,比如:
{
"firstname": "john",
"lastname": "doh"
}
Servlet:
@RestController
public class PersonController {
@PostMapping("/generic")
public void post(Map<String, String> params) {
}
}
这工作正常。但是现在我还想接受同一端点上的对象列表。但是我不能只添加另一个采用不同参数的方法。因为春天抱怨映射模棱两可:
@PostMapping("/generic")
public void post2(List<Map<String, String>> params) {
}
问:如何接受既可以是Map
又可以是List
的json
数据?如果输入是映射/列表,我可以稍后有条件地继续使用业务代码。但是,我怎么能在弹簧控制器中并排接受它们呢?
@PostMapping
public void post(JsonNode json) {
if (json.isObject()) {
Map<String, String> map = mapper.convertValue(json, Map.class);
} else if (json.isArray()) {
List<Map<String, String>> list = mapper.convertValue(json, List.class);
}
}