如何在Spring控制器中允许POST列表或映射为JSON?

时间:2018-04-19 11:34:23

标签: java json spring spring-mvc spring-web

我有一个@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) {
   }

问题:我如何接受可以同时为jsonMap的{​​{1}}数据?如果输入是map / list,我可以在条件上继续使用业务代码。但我怎么能在弹簧控制器中并排接受它们呢?

1 个答案:

答案 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);
    }
}