Problème sur la sérialisation XStream
Alors voilà mon problème : j'ai une classe Test comprenant un attribut status de type Status et un attribut serializableObject de type Object. Lorsque je sérialise cette classe, l'attribut serializableObject est toujours d'un type descendant d'Object (disons qu'il est de la classe Version dans mon exemple mais cela varie selon la page que j'appelle, d'où le type Object car son "vrai" type n'est pas connu à l'origine).
Après sérialisation XML, j'ai un retour de cette forme là :
Code:
1 2 3 4 5 6 7 8 9 10
|
<response>
<status>
<code>100</code>
<mnemo>OK</mnemo>
</status>
<serializableObject class="version">
<version>21</version>
</serializableObject>
</response> |
Mon objet Status est sérialisé comme voulu mais l'attribut serializableObject n'affiche pas ce que je désirerais. En effet je voudrais avoir uniquement <version>21</version> mais j'ai toujours la balise <serializableObject class="version"> qui vient l'entourer.
Ceci semble être du au fait que ce serializableObject est déclaré de type Object car dans mon Converter pour l'objet Version, je n'ai que ce code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
public class VersionConverter implements Converter {
/**
* Méthode permettant de créer le flux de sortie à partie de l'objet
* sérialisable.
*/
public void marshal(Object value, HierarchicalStreamWriter writer,
MarshallingContext context) {
writer.startNode("version");
writer.setValue(String.valueOf(((Version)value).getVersion()));
writer.endNode();
}
/**
* Méthode permettant de passer d'un flux à un objet.
* @return l'objet créé à partir du flux
*/
public Object unmarshal(HierarchicalStreamReader reader,
UnmarshallingContext context) {
return null;
}
/**
* Méthode indiquant quelle classes peuvent utiliser ce Converter : uniquement
* la classe Version
* @return true si la classe passé peut être convertie, false sinon.
*/
@SuppressWarnings("unchecked")
public boolean canConvert(Class clazz) {
return clazz.equals(Version.class);
}
} |
N'hésitez pas à me demander si tout cela ne vous semble pas clair et merci d'avance pour vos réponses.