7
votes

SimpleFramework, désériorialiser un élément vide à une chaîne vide au lieu de null

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> xxx pré>

serait sérialisé comme: p> xxx pré>

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 code> Comme on pouvait s'y attendre. P>

EDIT: strong> p>

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);
    }

});


0 commentaires

3 Réponses :



-1
votes

suis-je complètement bonkers pour penser qu'il devrait s'agir d'une chaîne vide au lieu de NULL?

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.

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.


1 commentaires

C'était donc le nœud d'entrée qui l'a causé, TX, utile de savoir :)



10
votes

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 @Convert (simppexmlstringconverter.class)

Créer la classe de convertisseur qui fait la conversion de chaîne de NULL pour vider la chaîne xxx

et Ne faites pas d'ajouter Nouvelle annotationtrategy () à votre Persister.


0 commentaires