我正在构建一个 RESTful API,并且我有一个用例,我需要能够呈现我的数据的两个不同视图。一种我们可以在内部使用,一种我们将在外部公开。此外,我的 API 需要同时支持 XML 和 JSON。
对于我的 JSON 响应,这对 Jackson 来说非常容易。我可以通过使用 JsonViews 的功能有条件地在我的 JSON 响应中包含字段:http ://wiki.fasterxml.com/JacksonJsonViews
首先,您需要创建一个简单的类来指定您的视图:
public class Views {
public static class External {}
public static class Internal extends External {}
}
现在使用我的视图类,我只是用它们所属的视图来注释我的字段,如下所示:
@JsonView(Views.External.class)
private String external = "External";
@JsonView(Views.Internal.class)
private String internal = "Internal";
然后,您可以序列化对象并指定要使用的视图:
ObjectMapper jsonMapper = new ObjectMapper();
ObjectWriter externalWriter = jsonMapper.writerWithView(Views.External.class);
String externalJson = externalWriter.writeValueAsString(new ResponseObject());
这适用于 JSON,但不幸的是,目前 XML 不支持同样的方法。我怎样才能用 XML 达到同样的效果?如果需要进行 XML 转换,我愿意使用 JAXB。