在@RequestBody中使用spring转换器

时间:2016-03-25 12:16:13

标签: java json spring spring-mvc jackson

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

Json代码示例:

{
 "name": "somename",
 "customObject": id
}

其中somename - string,id - 整数值

映射到:

@Getter
@Setter
@NoArgConstructor
public class ParentObject{
    private String name;
    private CustomObject customObject; 
}

转换器代码示例:

@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);
    }   
}

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

1 个答案:

答案 0 :(得分:1)

您应该通过扩展JacksonCustomMapper并将其注册到JsonMapper集合来实现自己的HttpMessageConverters。但是,我不建议污染默认转换,你可以传入@RequestBody一个不完整的json,杰克逊会将它解析为你的对象,在你的json对象中传递错误的键就足够了......这里有一个例子(成千上万):http://magicmonster.com/kb/prg/java/spring/webmvc/jackson_custom.html。享受它: - )