如何将 application/json 类型的 FilePart 编组到 spring webflux 功能端点处理程序中的 POJO?

How to marshal FilePart of type application/json to a POJO in spring webflux functional endpoint handler?

我收到一个多部分请求,其中一些部分代表 Json 个文件,我需要将其转换为 POJO,我可以使用基于注释的控制器

@RequestPart("person") Person

将该部分编组为 Person POJO。 有了功能端点,我可以通过

获得零件
request.body(BodyExtractors.toParts())

但我不知道如何将相关部分编组到 pojo。

为此,您可以在 webflux 中使用 Jackson2JsonDecoder。假设多部分表单数据的简单示例。

return serverRequest
        .multipartData()
        .map(MultiValueMap::toSingleValueMap)
        .map(stringPartMultiValueMap -> stringPartMultiValueMap.get("person"))
        .flatMap(part -> new Jackson2JsonDecoder()
            .decodeToMono(part.content(),
                ResolvableType.forClass(Person.class), null, null)
            .map(o -> (Person) o))
        .flatMap(person -> ServerResponse.ok().body(Mono.just(person), Person.class));