我即将开发一个基于 JAX-RS 的 RESTful Web 服务,我使用 MOXy (JAXB) 来自动生成我的 Web 服务的 JSON 响应。
一切都很酷,但由于 Web 服务将是基于 JavaScript 的 Web 应用程序的后端,因此可以公开访问,我不想公开某些细节,如类名等。
但是,我意识到在某些情况下 MOXy 会在编组后的字符串中嵌入一个“@type”条目,并且该条目后跟刚刚编组的对象的类名。
特别是,我意识到 MOXy 在编组扩展类的实例时会以这种方式运行。
假设以下超类“MyBasicResponse”
@XmlRootElement(name="res")
public class MyBasicResponse {
@XmlElement
private String msg;
public MyBasicResponse() {
// Just for conformity
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
}
而这个专业(扩展)类“MySpecialResponse”
@XmlRootElement(name="res")
public class MySpecialResponse extends MyBasicResponse {
@XmlElement
private String moreInfo;
public MySpecialResponse() {
// Just for conformity
}
public String getMoreInfo() {
return moreInfo;
}
public void setMoreInfo(String moreInfo) {
this.moreInfo = moreInfo;
}
}
所以,MyBasicResponse 对象的编组字符串是
{"msg":"A Message."}
(没关系!)
但是,MySpecialResponse 对象的编组字符串就像
{"@type":"MySpecialResponse","msg":"A Message.","moreInfo":"More Information."}
有没有办法剥离
"@type":"MySpecialResponse"
我的回应?