0

Lookup次の2 つのプロパティを持つクラスがあります。

public class Lookup {

    private String surveyName;
    private String GUID;    

    public Lookup(String name, String guid){
        this.surveyName = name;
        this.GUID = guid;   
    }

}

別のクラスには、Lookupシリアル化してファイルに保存しようとしているリストがあります。これが私がやっている方法です:

List<Lookup> lookup = new ArrayList<Lookup>();
lookup.add(new Lookup("foo","bar"));
XStream serializer = new XStream();
serializer.alias("Lookups",List.class);
String xml = serializer.toXML(lookup);

最終的に得られる XML は次のとおりです。

<Lookups>
  <Lookup>
    <GUID>bar</GUID>
  </Lookup>
</Lookups>

ご覧のとおり、 field のみをシリアル化し、 field はシリアル化しGUIDませんでしたsurveyName。なぜそのフィールドを無視するのですか?

4

2 に答える 2

1

ルックアップ変数を他の場所で変更していないことを確認してください。このコードは正常に実行されます

public class Test {
    public static void main(String[] args) {
        List<Lookup> lookup = new ArrayList<Lookup>();
        lookup.add(new Lookup("foo","bar"));
        XStream serializer = new XStream();
        serializer.alias("Lookups",List.class);
        String xml = serializer.toXML(lookup);
        System.out.println(xml);
    }
}
class Lookup {
    private String surveyName;
    private String GUID;    

    public Lookup(String name, String guid){
        this.surveyName = name;
        this.GUID = guid;   
    }
}

出力:

<Lookups>
  <Lookup>
    <surveyName>foo</surveyName>
    <GUID>bar</GUID>
  </Lookup>
</Lookups>
于 2012-04-26T21:18:03.250 に答える
0

愚かな私、間違いは完全に私の側にありました。フィールドnameは空の文字列を受け取っていたため、XStream はそれを無視していたに違いありません。

于 2012-04-26T21:13:53.283 に答える