J'utilise SimpleFramework ( http://simple.sourceforge.net/ ) dans un projet pour mon Serializing / désérialisant les besoins, mais cela ne fonctionne pas comme prévu (puits, au moins, pas comment j'attends) lorsque vous traitez des valeurs de chaîne vides / nulelles.
Si je serai sérialiser un objet avec une valeur de chaîne vide, elle montrera en tant que Elément xml vide. p>
de sorte que ceci: p> serait sérialisé comme: p> mais désérialisant Cet attribut vide se retrouvera comme null, au lieu d'une chaîne vide. p> suis-je complètement bonkers pour penser que cela devrait être une chaîne vide au lieu de NULL? Et comment sur terre puis-je faire fonctionner dans la façon dont je ne vas pas? P> Oh, et si je serai sérialisée l'objet avec un attribut null, il finira par montrer
Ajout d'une simple testeuse Je suis actuellement en cours d'exécution P>
new Converter<String>() {
@Override
public String read(InputNode node) throws Exception {
if(node.getValue() == null) {
return "";
}
return node.getValue();
}
@Override
public void write(OutputNode node, String value) throws Exception {
node.setValue(value);
}
});
3 Réponses :
Utilisez l'annotation Attribut. Il a une propriété nommée vide utilisée pour fournir une valeur par défaut. P>
Si je comprenais correctement, l'annotation @attribute fait un attribut pour l'élément XML, de sorte que cela n'affecte pas l'élément lui-même.
suis-je complètement bonkers pour penser qu'il devrait s'agir d'une chaîne vide au lieu de NULL? P>
Pas aussi loin que je sache ... Normalement, cela indique un problème avec la sérialisation en cours de route, il est censé renvoyer l'objet et tout ce qu'elle est une instance non transitoire variable avec les valeurs définies sur la sérialisation. P>
BTW Vous n'avez pas publié tous votre code, il est également possible que la commande dans laquelle la série de sérialisation commence signifie qu'il saute les données de chaîne que cela peut être un problème. P>
C'était donc le nœud d'entrée qui l'a causé, TX, utile de savoir :)
Répondre à la complétude
ANNOTATER VOTRE ÉLÉMENT AVEC L'ANNETINATION CONVERTINGE ET DONNEZ-LEZ UNE CLASSE DE CONVERTER en tant que paramètre
Créer la classe de convertisseur qui fait la conversion de chaîne de NULL pour vider la chaîne p> et Ne faites pas d'ajouter @Convert (simppexmlstringconverter.class) code> p>
Nouvelle annotationtrategy () Code> à votre Persister. P> P>