我有这个简单的控制器接收地图作为输入:
@RequestMapping(value = "/providers", method = RequestMethod.PATCH, headers = "Accept=application/json")
@ResponseBody
@Transactional
public Map<String, Object> updateProvider(@RequestBody Map<String, Object> updates,
UriComponentsBuilder uriComponentsBuilder, final HttpServletRequest request) {
return updates;
}
我在application.properties
文件中的Spring Boot中配置了此属性:
spring.jackson.default-property-inclusion=non_empty
然后,如果我使用以下JSON对象发出 PATCH 请求。
{
"name":"frndo",
"lastname":""
}
RESPONSE 中的结果内容为:
{
"name":"frndo"
}
但 REQUEST 中的输入内容为:
{
"name":"frndo",
"lastname":""
}
我的问题是,为什么 REQUEST 中的内容在 RESPONSE 中有所不同,如果要对Map对象进行序列化,则您具有以下全局配置:
spring.jackson.default-property-inclusion=non_empty
如果@RequestBody Map<String, Object> updates
为空,那么name
到达时的确切原因是lastname
和lastname
字段?
在 RESPONSE 中,您可以看到配置的效果,但在 REQUEST 中看不到。如果映射器必须将JSON转换为java对象,并且在该过程中必须应用全局配置,那么对此有何解释?
我希望在 REQUEST 和 RESPONSE 中提供相同的内容
非常感谢!