在Sping Boot RestController中,如何将以下JsonMap到 Package 器类中的Map

628mspwn  于 2023-07-01  发布在  其他
关注(0)|答案(1)|浏览(106)

在Sping Boot RestController中,如何将以下JsonMap到 Package 器类中的Map。在这段代码中,Wrapperclass为null,没有Map发生。当我直接使用requestBody中的EnumMap时,代码可以工作,但我需要使用一个Wrapper类。
要求:

{
    "monday": [
        {
            "name": "task1",
            "allotedTime": 15
        }
    ],
    "tuesday": [
        {
            "name": "open",
            "allotedTime": 20
        },
        {
            "name": "close",
            "allotedTime": 60
        }
    ]
}

RestController方法:

@PostMapping("/taskApi")
    public ResponseEntity<String> createTaskList(@Valid @RequestBody
                                                      WrapperClass wrapperclass
                                                      BindingResult result) {
//logic
    }

Package 类:

@Data
public class WrapperClass {
  
    private EnumMap<DayOfWeek, List<Task>> taskList;
}

任务类别:

@Data
public class Task {

    private String name;

    @Min(value = 0, message = "Time should not be less than 0")
    private int alottedTime;

}
j9per5c4

j9per5c41#

由于您的 Package 器类的key为taskList,因此要使Jackson反序列化,您需要按以下方式传递请求体

{
    "tasklist": {
        "monday": [
            {
                "name": "task1",
                "allotedTime": 15
            }
        ],
        "tuesday": [
            {
                "name": "open",
                "allotedTime": 20
            },
            {
                "name": "close",
                "allotedTime": 60
            }
        ]
    }
}

相关问题