我正在接收一个 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>
, orHttpHeaders
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/