Spring WebFlux的新功能,尝试在一个端点返回字符串数组,由于某种原因,它返回一个连接的字符串代替JSON数组。
用一些类 Package 它解决了这个问题,但想知道如何实际返回字符串数组?例如,返回Array<String>
可以正常工作
class Wrapper(val data: String) {
@RestController
class Test() {
@RequestMapping("/wrapped") // Returns valid JSON array: [{"value":"Hello"},{"value":"World"}]
fun b() = Flux.just(Wrapper("Hello"),Wrapper("World"))
@RequestMapping("/raw") // Returns not valid JSON with just one concatenated string: HelloWorld
fun a() = Flux.just("Hello", "World")
}
字符串
2条答案
按热度按时间bvpmtnay1#
从Sébastien Deleuze(Spring框架提交者)在Twitter https://twitter.com/sdeleuze/status/956136517348610048中得到了答案
实际上,当元素类型是String时,处理程序方法预期直接提供格式良好的JSON String块,不涉及与Jackson的序列化。
cbwuti442#
在我的例子中,< String>按照官方spring文档中的建议,用Mono<List >替换Flux并没有立即解决问题。
我调用了以下驻留在不同微服务中的方法:
字符串
并使用下面的代码进行调用:
型
然而,我得到了像“productId1”,“productId2”这样的返回值,这会在代码中产生问题,因为它被解释为一个有两个字符串的数组:
型
对此的修复是在webClient构建器中使用bodyToMono并传递ParameterizedTypeReference:
型