Spring Boot REST读取JSON数组有效负载

2020年12月2日 61点热度 0条评论

我有这种PostMapping方法

@PostMapping("/offreStage/{id}/users")
public ResponseEntity<?> addAuthorizedStudents(@PathVariable Long id,
                                               @RequestBody Map<String, String> students) {
    return service.addAuthorizedStudentsToOffer(id, students);
}

并且我使用以下JSON负载进行发布请求:

[
    {
        "value": 15,
        "label": "student2@gmail.com"
    },
    {
        "value": 14,
        "label": "student21@gmail.com"
    }
]

这将返回以下内容:

“ message”:“ JSON解析错误:无法反序列化以下实例


java.util.LinkedHashMap在START_ARRAY令牌中;嵌套异常

是com.fasterxml.jackson.databind.exc.MismatchedInputException:无法

在START_ARRAY中反序列化
java.util.LinkedHashMap的实例

令牌\ n位于[来源:(PushbackInputStream);行:1,列:1]“,

解决方案如下:

发送的正文与功能中的正文不匹配。

更准确地说,这是您的地图:

  {
        "value": 15,
        "label": "student2@gmail.com"
  }

您需要一张地图列表,所以它不起作用。所以应该是这个:函数中的
List<Map<String, String>>

或者,最好使用集合(
see this post)。