从序列化中排除某些Object字段

时间:2016-03-15 10:12:15

标签: java xml jaxb

我正在使用javax.xml.bind.annotation.XmlRootElement注释对象将其序列化为xml字符串。

        JAXBContext jc = JAXBContext.newInstance(obj.getClass());
        // Marshal the object to a StringWriter
        Marshaller marshaller = jc.createMarshaller();
        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
        marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
        marshaller.setProperty(Marshaller.JAXB_SCHEMA_LOCATION, "http://www.example.com/schema.xsd");
        StringWriter stringWriter = new StringWriter();
        marshaller.marshal(obj, stringWriter);
        result = stringWriter.toString();

如何排除对象的某些字段以便不发送它们?必须注释类字段的注释,以便将其从最终字符串中排除。

2 个答案:

答案 0 :(得分:2)

使用@XmlTransient注释:

  

阻止将JavaBean属性/类型映射到XML表示。

@XmlTransient
public String toBeSkippedField;

答案 1 :(得分:1)

您可以使用transient关键字来省略序列化字段。

例如:

int k;
transient int j;

Variable j不会被序列化,因为我们已经提到了transient关键字。