小编Phi*_* T.的帖子

使用EclipseLink MOXy(JAXB)将子类编组到JSON时是否有可能隐藏"@type"条目?

我即将开发基于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;
}
}
Run Code Online (Sandbox Code Playgroud)

而这个专门(扩展)类"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;
}
}
Run Code Online (Sandbox Code Playgroud)

所以,MyBasicResponse对象的编组字符串是

{"msg":"A Message."} …
Run Code Online (Sandbox Code Playgroud)

json jax-rs jaxb eclipselink moxy

5
推荐指数
1
解决办法
1267
查看次数

标签 统计

eclipselink ×1

jax-rs ×1

jaxb ×1

json ×1

moxy ×1