java - 从 @RequestHeader 读取 JSON 对象

标签 java spring-boot

我正在接收一个 JSON 对象,该对象是从前端作为字符串发送给我的,我希望 spring-boot 将其解析为我的 Map。

我尝试过 @RequestHeader("header-name") Map header 和 @RequestHeader Map header ,但两者都为我提供了所有 header 的映射,而不是我的目标包含 JSON 的 header 。

public ResponseEntity<MyObject> getStuff(@RequestHeader("My-Header") Map myHeaderJSON)

我希望 Spring 将变量 myHeaderJSON 字符串解析为 Map。有什么办法可以实现这一点吗?让 spring-boot 帮我将字符串解析为 JSON 或 Map?

最佳答案

不,您需要自己对其进行反序列化。

来自spring docs :

If the method parameter is Map<String, String>, MultiValueMap<String, String>, or HttpHeaders then the map is populated with all header names and values.

它不会从 map 中提取和反序列化 json,而是您需要执行以下操作:

public ResponseEntity<MyObject> getStuff(@RequestHeader Map myHeader) { 
    String json = myHeader.get("My-Header");
    MyClass myClass = objectMapper.readValue(json, MyClass.class);

    ... 
}

关于java - 从 @RequestHeader 读取 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58616803/

相关文章:

java - 是否有 BiConsumer 的反向映射到元组等多个值

java - 我在 java.io.PipedInputStream 中发现了错误吗?

java - 业务对象Java

java - AWS - Ubuntu 用户 session 停止 Spring Boot 应用程序

java - Spring 启动: MockMvc returning strange responses

java - 现有的Maven项目可以添加SpringBoot框架吗

java - Spring 批 : Cannot determine embedded database driver class for database type NONE

java - 如何在 Java 中读取小于 -128 的负字节值

java - 跟踪谁在微服务中创建或更改了实体

java - 用于构建 'debug' 和 'release' JAR 文件的惯用 Gradle 脚本