在@RequestBody中使用spring转换器

Jar*_*rek 5 java spring json spring-mvc jackson

是否可以强制Converter(org.springframework.core.convert.converter.Converter)来完成json对象映射?

Json代码示例:

{
 "name": "somename",
 "customObject": id
}
Run Code Online (Sandbox Code Playgroud)

其中 somename - 字符串,id - 整数值

映射到:

@Getter
@Setter
@NoArgConstructor
public class ParentObject{
    private String name;
    private CustomObject customObject; 
}
Run Code Online (Sandbox Code Playgroud)

转换器代码示例:

@Component
public class CustomObjectConverter implements Converter<String, CustomObject>{

    @Autowired
    private CustomObjectService customObjectService;

    @Override
    public CustomObject convert(String arg0) {
        Long id = Long.parseLong(arg0);
        return customObjectService.findById(id);
    }   
}
Run Code Online (Sandbox Code Playgroud)

我想要实现的是将 json 映射到将从数据库嵌套对象自动获取的对象。

Fer*_*azu 2

您应该JacksonCustomMapper通过扩展JsonMapper然后将其注册到HttpMessageConverters. 但是,我不建议污染默认转换,您可以传入@RequestBody不完整的 json,Jackson 会将其解析为您的对象,这足以不在您的 json 对象中传递错误的键...一个示例(数千个) )这里: http: //magicmonster.com/kb/prg/java/spring/webmvc/jackson_custom.html。好好享受 :-)