Serialisation dans un String

Ensias Messages postés 31 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 15 décembre 2006 - 25 nov. 2006 à 21:46
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 - 27 nov. 2006 à 18:46
Bonjour
Est ce qu'il est possible de serialiser un objet dans un String sans passer par un fichier.
Si c possible comment faire pour recuperer l'objet à partir du String

5 réponses

sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
26 nov. 2006 à 00:11
heu ben en fait c mystique ce que tu dit ...

tu veux faire quoi exactement ?

"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
0
indiana_jules Messages postés 750 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 23 décembre 2008 22
27 nov. 2006 à 10:30
Salut
si je vois de quoi il parle. En fait, je pense qu'il veut pouvoir reconstruire un objet à partir d'une chaîne de caractéres. Dans ce cas, tu utilises / redéfinies le toString de ta classe afin qu'il te renvoie une String de ta classe (contient généralement la valeur des varaibles ...). Ensuite, pour la reconstruction de l'objet depuis cette chaine de caractéres ... tu parses XD

Peut-être qu'il est possible de faire un reverse de ton objet, mais là je ne vois pas trop (pas pris de café ce matin -_-')

Voilà

le monde a des idées : la preuve, c'est qu'il y en a de mauvaises
ne comprends pas tout, mais je parle de tout : c'est ce qui compte
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
27 nov. 2006 à 16:12
Salut,

voici un exemple avec la serialisation et deseralisation en XML

La classe à serializer :
import java.io.Serializable;

/** petite classe de test */
public class MyClass implements Serializable {
    private static final long   serialVersionUID    = 8448620218748602936L;
    private int[]                     myIntArray            = null;
    private String                  var                         = null;

    public String getVar() {
        return var;
    }

    public void setVar(String var) {
        this.var = var;
    }

    public int[] getMyIntArray() {
        return myIntArray;
    }

    public void setMyIntArray(int[] myIntArray) {
        this.myIntArray = myIntArray;
    }
}

la classe qui serialize :
import java.beans.XMLDecoder;
import java.beans.XMLEncoder;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;

public class Test {

    public static void main(String[] args) {
        // on init et rempli la classe
        MyClass mc = new MyClass();
        mc.setVar("Hello");
        int myArray [] = new int [50];
        for (int i = 0; i < myArray.length; i++)
            myArray[i] = i;
        mc.setMyIntArray(myArray);

        ByteArrayOutputStream out = new ByteArrayOutputStream();
        XMLEncoder encoder = new XMLEncoder(new BufferedOutputStream(out));
        //on eccrit dans le tableau
        encoder.writeObject(mc);
        //important sinon il ecrit pas (vu qu'il fait le flush sinon tu peux faire un flush avant mais c'est redondant avec close
        encoder.close();
       
        //on affiche pour le fun
        System.out.println(out.toString());
        //petit retour chariot pour demarquer les affichages
        System.out.println();
        System.out.println();
        //on refait un nouvel objet
        ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray());
        XMLDecoder decoder = new XMLDecoder(new BufferedInputStream(in));
        MyClass mc2 = (MyClass)decoder.readObject();
       
        //on affiche le contenu
        System.out.println(mc2.getVar());
        for(int i : mc2.getMyIntArray())
            System.out.println(i);
       
    }
   
}

apres il te reste la solution JAXB2 qui est relativement plus performant

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
0
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
27 nov. 2006 à 18:38
a ok je viens de voir ce qu'il voulais dire ...
toujours est il que ce n'etait pas explicite ...

apres passer par un String semble une bonne idee pour ensuite le parser et utiliser pour ca toString ou une autre methode ....

"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
27 nov. 2006 à 18:46
Salut,

paser par un toString et refaire le truc c'est super lourd de plus tu est trop dépendant de ton objet c'est pour cela que j'ai opté pour jaxb qui est vraiment fort pour ce genre de choses mais la grosse contrainte est de connaitre la structure d'un schéma xsd pour la génération des classes java (bien que pour les windowsien il existe des utilitaires payant pour le faire avec des simples clic )

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
0
Rejoignez-nous