如果您希望 Spring 将单个 http 请求标头“注入”到您的控制器方法(作为参数)中,请尝试以下方式:
@RequestMapping("/your-path")
public ResponseEntity<MyObject> getStuff(@RequestHeader("My-Header") String jsonValue) {
//...
}
也可以在这里查看:https://www.viralpatel.net/spring-requestheader-example/
您也可以尝试实现自定义转换器,请参见此处的示例:
https://stackoverflow.com/a/50996349/150623
要走的路是使用 Jackson 库中的 ObjectMapper 实例将 JSON 字符串转换为 java.util.Map 对象...
可以这样工作(虽然没有测试):
import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;
@Component
public class JsonToMapConverter implements Converter<String, Map<String,String>> {
private ObjectMapper objectMapper = new ObjectMapper();
@Override
public Map<String, String> convert(final String json) {
try {
return objectMapper.readValue(json, Map.class);
} catch (IOException e) {
//handle exception...
}
}
}
不要忘记将 Jackson 添加到您的依赖项中,例如在 Maven 中:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.8</version>
</dependency>