我使用的域对象是从其他实现生成器模式的服务导入的,因此没有arg构造函数和setter。我想把来自@requestbody的jsonMap到这个域对象。我知道我可以用@jsonpojobuilder和一些其他的注解它,但是我不能控制它。所以我一直坚持写我自己的json到对象Map器,我不认为这是一个好主意,因为它涉及验证等,并与请求体紧密耦合。
代码-
@RequestMapping(value = "someurl", method = RequestMethod.POST)
public ResponseEntity<ObjectA> addObject(@PathVariable String id, @RequestBody @NonNull String body) {
ObjectA obj = service.addObject(id, mapper.mapJSONToObject(body));
return new ResponseEntity<>(obj , HttpStatus.CREATED);
}
我听说我们可以使用一些消息转换器并将构建器类作为参数传递,而不是编写自己的Map器。我没有找到这样的例子,如果有人以前做过,或者可以指给我一些网站,那会很有帮助。
1条答案
按热度按时间hyrbngr71#
我从未尝试过,但一般来说,springmvc支持“自定义转换器”的抽象,您可以编写这些抽象来帮助spring将json转换为复杂对象。
我想你有
MyComplicatedClass
没有ops构造器但是有一个构造器。因此,您可以执行以下操作:现在,当应用程序识别出这个转换器时,它允许使用
MyComplicatedClass
在控制器的方法中,好像spring知道如何转换它。因此,您在示例中提供的代码片段应该可以正常工作。所有这些都是在不“触碰”代码的情况下完成的
MyComplicatedClass
.