Java springrest中的父类响应
我已经使用Jackson实现了一个带有SpringREST的RESTAPI(在pom.xml中使用包org.codehaus.Jackson-jacksonmapper asl-1.9.13指定)。在控制器中,我有:Java springrest中的父类响应,java,json,spring,rest,spring-mvc,Java,Json,Spring,Rest,Spring Mvc,我已经使用Jackson实现了一个带有SpringREST的RESTAPI(在pom.xml中使用包org.codehaus.Jackson-jacksonmapper asl-1.9.13指定)。在控制器中,我有: @Controller @RequestMapping("/test") public class TestController { @RequestMapping(value="id", method= RequestMethod.GET) @ResponseBo
@Controller
@RequestMapping("/test")
public class TestController {
@RequestMapping(value="id", method= RequestMethod.GET)
@ResponseBody
public Parent findById(@PathVariable("id") int id) {
Child child = new Child();
child.setId(id);
child.setName("test");
return child;
}
}
例如,在父项中,我们可以有:
public class Parent {
int id;
public void setId(int id) {
this.id = id;
}
}
和孩子:
public class Child extend Parent {
String name;
public void setName(String name) {
this.name = name;
}
}
我的问题是,我希望响应只与父类相关,而不与子类相关(因为现在响应具有子类的结构)。一个适合您的解决方案是:
@JsonAutoDetect(getterVisibility = JsonAutoDetect.Visibility.NONE)
public class Parent {
@JsonProperty
int id;
public void setId(int id) {
this.id = id;
}
}
我必须承认,这个解决方案并不十分优雅,因为您需要向父类中的每个字段添加@JsonProperty
注释,但它的好处是不需要修改它的任何子类
可以找到jackson库中的所有注释
可以找到
@JsonAutoDetect
的javadoc,不知道问题是什么。您的孩子不扩展父母。退房,对不起。这是一个错误。子对象扩展父对象。