XStream的。 UnknownFieldException

时间:2015-05-17 14:55:26

标签: xstream

请告诉我为什么会产生异常? 当我尝试将xml反序列化为java对象时,我遇到异常。

  

com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter $ UnknownFieldException:没有这样的字段addressservice.Region.region。

---- Debugging information ----
field               : region
class               : addressservice.Region
required-type       : addressservice.Region
converter-type      : com.thoughtworks.xstream.converters.reflection.ReflectionConverter
path                : /AddressServiceConfig/regions/region
line number         : 3
class[1]            : addressservice.AddressServiceConfig
version             : 1.4.7

我的XML:

<addressServiceConfig>
    <regions>
        <region>
            <regionName>region1</regionName>
            <provinces>
                <province>
                    <name>province11</name>
                    <code>11</code>
                </province>
                <province>
                    <name>province12</name>
                    <code>12</code>
                </province>

            </provinces>
        </region>
        <region>
            <regionName>region2</regionName>
            <provinces>
                <province>
                    <name>province21</name>
                    <code>21</code>
                </province>
                <province>
                    <name>province22</name>
                    <code>22</code>
                </province>
            </provinces>
        </region>
    </regions>

    <pathToCodeposFiles></pathToCodeposFiles>
</addressServiceConfig>

我的课程

@XStreamAlias("addressServiceConfig")
public class AddressServiceConfig
{
    private String pathToCodeposFiles;
    @XStreamImplicit(itemFieldName = "region")
    private List<Region> regions;
}

@XStreamAlias("region")
public class Region
{
    private String regionName;
    @XStreamImplicit(itemFieldName = "province")
    private List<Province> provinces;
}

@XStreamAlias("province")
public class Province
{
    private int code;

    private String name;
}

请帮忙。

1 个答案:

答案 0 :(得分:1)

您的xml定义没有隐式集合regionsprovinces,只有明确的集合。

您应该从类定义中删除@XStreamImplicit(itemFieldName = "region")@XStreamImplicit(itemFieldName = "province")

明确的regions集合:

<addressServiceConfig>
  <regions>
    <region>
    ...
    </region>
    <region>
    ...
    </region>
  </regions>
</addressServiceConfig>

隐式regions集合:

<addressServiceConfig>
  <region>
  ...
  </region>
  <region>
  ...
  </region>
</addressServiceConfig>