我想知道从资源读取,解析和提供文件的正确方法是什么。

目前,我正在执行以下操作:

fun getFile(request: ServerRequest): Mono<ServerResponse> {
    val parsedJson =
        objectMapper.readValue(readFile("fileName.json"), JsonModel::class.java)

    // modify parsed json

    return ok().contentType(APPLICATION_JSON).bodyValue(parsedJson)
}

private fun readFile(fileName: String) =
    DefaultResourceLoader()
        .getResource(fileName)
        .inputStream.bufferedReader().use { it.readText() }

我注意到Netty中的JsonObjectDecoder类,但是我不知道是否可以应用于我的用例。

那么,如何读/解析资源文件的反应方式是什么?

最佳答案

扩展@vins答案后,我得出以下解决方案:

Jackson2JsonDecoder()
    .decodeToMono(
        DataBufferUtils.read(
            DefaultResourceLoader()
                .getResource("$fileName.json"),
            DefaultDataBufferFactory(),
            4096
        ),
        ResolvableType.forClass(JsonModel::class.java), null, null
    )
    .map { it as JsonModel }

关于json - 使用WebFlux从资源读取和解析文件的 react 方式?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61139186/

10-09 19:34