XStrea 反序列化 复杂结构

maven引用

<dependency>
            <groupId>com.thoughtworks.xstream</groupId>
            <artifactId>xstream</artifactId>
            <version>1.4.10</version>
</dependency>


@XmlAccessorType(XmlAccessType.FIELD)
@XStreamAlias("GDSPublisherRequest")
@Data
public class GDSPublisherRequest {

    @XStreamAsAttribute
    @XStreamAlias("Profile")
    private String profile;

    @XStreamAlias("FIDELIO_RateUpdateNotifRQ")
    private RateUpdateNotifRQ rateUpdateNotifRQ;

    @XStreamAlias("Properties")
    private List<ChinAoLineProperty> properties;
}

@Data
public class RateUpdateNotifRQ {
    @XStreamAsAttribute
    @XStreamAlias("echoToken")
    private String echoToken;

}

@Data
@XStreamAlias("Property")
public class ChinAoLineProperty {

    @XStreamAsAttribute
    @XStreamAlias("chainCode")
    private String chainCode;

    @XStreamAsAttribute
    @XStreamAlias("hotelCode")
    private String hotelCode;
}


String xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
                "<GDSPublisherRequest  Profile=\"CCM\">\n" +
                    "<FIDELIO_RateUpdateNotifRQ echoToken=\"SSL\">\n" +
                        "<Properties>\n" +
                            "<Property chainCode=\"CCM\" >\n" +
                            "</Property> \n" +
                        "</Properties>\n" +
                    "</FIDELIO_RateUpdateNotifRQ> " +
                "</GDSPublisherRequest>";

        XStream xstream = new XStream(new DomDriver());//创建Xstram对象
        xstream.autodetectAnnotations(true);
        xstream.processAnnotations(GDSPublisherRequest.class);
        GDSPublisherRequest request = (GDSPublisherRequest) xstream.fromXML(xml);
        System.out.println("args = " + xstream.toXML(request));

如上面代码使用XStream ,现在是无法序列化 Properties 和 Property 节点,请各位大哥帮忙看一下,谢谢!!

2个回答

你的private List properties应该在RateUpdateNotifRQ 类里而不是GDSPublisherRequest 类。还有因为别名有下划线_,字符串转类的时候没问题。类转字符串的时候会变成__两个下划线,不注意还看不出来,之前就遇到过这个坑

sq308587563
伱注定s我的 没有看明白,我这个应该不是下划线的问题吧?
大约 2 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问