问题描述
我正在使用resteasy版本3.0.11,并将jaxb和jackson 2.0作为序列化提供程序。 我有一个看起来像这样的服务:
@Path("/path")
@IgnoreMediaTypes("application/*+json")
public interface MyService {
@GET
@Path("/test")
@Produces(MediaType.APPLICATION_JSON)
@IgnoreMediaTypes("application/*+json")
MyData getData();
}
这是MyData类:
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class MyData implements JsonSerializable {
@JsonProperty
private int a;
private int b;
}
JsonSerializable接口:
@JsonAutoDetect(
fieldVisibility = JsonAutoDetect.Visibility.NONE,
getterVisibility = JsonAutoDetect.Visibility.NONE,
setterVisibility = JsonAutoDetect.Visibility.NONE,
isGetterVisibility = JsonAutoDetect.Visibility.NONE,
creatorVisibility = JsonAutoDetect.Visibility.NONE)
@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown=true)
public interface JsonSerializable {}
我的问题是,当我使用localhost / path / test调用此服务时,MyData类的b属性也被序列化了:
{"a":0,"b":0}
甚至JsonSerializeble接口也将fieldVisibility设置为NONE。 我已经尝试了所有我没有成功的方法。 这个问题有帮助吗?
1楼
我怀疑,JAXB注释优先于Jackson注释。 这取决于Jackson的配置方式(有关详细信息,请参阅 )。
@XmlAccessorType(XmlAccessType.FIELD)
与@JsonAutoDetect( fieldVisibility = JsonAutoDetect.Visibility.ANY)
基本上相同。
删除@XmlAccessorType
批注,您应该@XmlAccessorType
顺利。