我有一个@PostMapping
,允许用户发送简单的json
地图,例如:
{
"firstname": "john",
"lastname": "doh"
}
的Servlet
@RestController
public class PersonController {
@PostMapping("/generic")
public void post(Map<String, String> params) {
}
}
这很好用。但现在我想接受相同端点上的对象列表。但我不能只添加另一个采用不同参数的方法。因为Spring抱怨模糊映射:
@PostMapping("/generic")
public void post2(List<Map<String, String>> params) {
}
问题:我如何接受可以同时为json
和Map
的{{1}}数据?如果输入是map / list,我可以在条件上继续使用业务代码。但我怎么能在弹簧控制器中并排接受它们呢?
答案 0 :(得分:0)
@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);
}
}