【问题标题】:Response with the parent class in SPRING REST在 SPRING REST 中响应父类
【发布时间】:2014-04-24 12:19:03
【问题描述】:

我已经使用 Jackson 实现了一个带有 SPRING REST 的 REST API(在 pom.xml 中使用包 org.codehaus.jackson - jackson-mapper-asl - 1.9.13 指定)。在控制器中我有:

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

例如在 Parent 我们可以有:

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

我的问题是我希望响应只与父类而不是子类(因为现在响应具有子类的结构)。

【问题讨论】:

  • 不知道问题是什么。您的孩子没有扩展父母。查看接口。
  • 对不起。那是一个错误。子扩展父。

标签: java json spring rest spring-mvc


【解决方案1】:

一个适合您的解决方案如下:

@JsonAutoDetect(getterVisibility = JsonAutoDetect.Visibility.NONE)
public class Parent {

    @JsonProperty
    int id;

    public void setId(int id) {
        this.id = id;
    }
}

我不得不承认,这个解决方案并不是非常优雅,因为您需要将 @JsonProperty 注释添加到 Parent 类中的每个字段,但确实具有不需要对其任何子类进行修改的好处

jackson 库中的所有注解都可以在here 中找到。

@JsonAutoDetect的javadoc可以在here找到

【讨论】:

    猜你喜欢
    • 2015-09-02
    • 1970-01-01
    • 2016-05-01
    • 2014-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多