Java Mixins和Jackson注释
我们目前为数据对象提供了一些混合,以便将注释排除在数据对象之外。比如说Java Mixins和Jackson注释,java,jackson,mixins,Java,Jackson,Mixins,我们目前为数据对象提供了一些混合,以便将注释排除在数据对象之外。比如说 public class SomeDataObj { private int a; public int getA() { return this.a; } public void setA(final int a) { this.a = a; } } public interface SomeDataObjMixin { @JacksonXmlElementWrapper(useWra
public class SomeDataObj {
private int a;
public int getA() { return this.a; }
public void setA(final int a) { this.a = a; }
}
public interface SomeDataObjMixin {
@JacksonXmlElementWrapper(useWrapping = false)
@JacksonXmlProperty(localName = "A")
int getA();
@JacksonXmlElementWrapper(useWrapping = false)
@JacksonXmlProperty(localName = "A")
void setA(int a);
}
然后在我们的对象映射器类中
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
public class OurXmlMapper extends XmlMapper {
public OurXmlMapper(final ConfigurableCaseStrategy caseStrategy) {
setPropertyNamingStrategy(caseStrategy);
setSerializationInclusion(Include.NON_NULL);
//yadda yadda
addMixin(SomeDataObj.class, SomeDataObjMixin.class);
// etc etc
}
但是,出于各种原因,我想在数据对象的私有字段中添加一个新的注释,而不是getter或setter。有没有办法通过混入来维持这种分离?我尝试创建一个基本类作为mixin(而不是接口),并使用
新的注释。这并没有达到我想要的。有什么想法吗?使用混凝土类作为混合工
// ******************* Item class *******************
public class Item {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
// ******************* ItemMixIn class *******************
@JacksonXmlRootElement(localName = "item-class")
public class ItemMixIn {
@JacksonXmlProperty(localName = "firstName")
private String name;
}
// ******************* test method *******************
public void test() throws Exception {
ObjectMapper mapper = new XmlMapper();
mapper.addMixIn(Item.class, ItemMixIn.class);
Item item = new Item();
item.setName("hemant");
String res = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(item);
System.out.println(res);
}
输出:
<item-class>
<firstName>hemant</firstName>
</item-class>
赫曼特
我有杰克逊版本2.9.5谢谢。我从问起就意识到了一些事情,这使得我的问题变得毫无用处。