J'aimerais enregistrer un talbeau associatif sans trous (HashMap) dans
une base SQL. Pour cela, j'ai besoin de le stocket sous forme de chaine
(dans ce sens je serialize), et ensuite de deserializer pour obtenir un
HashMap depuis un String.
J'arrive bien à serializer avec ceci:
--
String str;
HashMap hm = new HashMap();
// remplir le Hash map
hm.put("nom", "durand");
hm.put("prenom", "rené");
str = hm.toString();
--
J'obtiens ceci:
{nom=durand, prenom=rené}
Mais je ne sais absolument pas comment retrouver mon HashMap depuis le
String ! Je suis tombé sur des fonctions de deserialization readObject
qui prennent toutes des flux !
Mais je ne sais absolument pas comment retrouver mon HashMap depuis le String ! Je suis tombé sur des fonctions de deserialization readObject qui prennent toutes des flux !
Merci d'avance.
Il faut parser la chaine je suppose.
Voila un code qui marche.
public class testparse {
public static void main (String args[]) { String str; HashMap hm = new HashMap(); hm.put("nom", "durand"); hm.put("prenom", "rené"); str = hm.toString(); System.out.println(hm);
HashMap hm2 = new HashMap(); String tmp = str.substring(1,str.length()-1); StringTokenizer st = new StringTokenizer(tmp,", "); while (st.hasMoreTokens()) { StringTokenizer st2 = new StringTokenizer(st.nextToken(),"="); hm2.put(st2.nextToken(),st2.nextToken()); }
System.out.println(hm2.toString()); }
}
Mais je ne sais absolument pas comment retrouver mon HashMap depuis le
String ! Je suis tombé sur des fonctions de deserialization readObject
qui prennent toutes des flux !
Merci d'avance.
Il faut parser la chaine je suppose.
Voila un code qui marche.
public class testparse {
public static void main (String args[]) {
String str;
HashMap hm = new HashMap();
hm.put("nom", "durand");
hm.put("prenom", "rené");
str = hm.toString();
System.out.println(hm);
HashMap hm2 = new HashMap();
String tmp = str.substring(1,str.length()-1);
StringTokenizer st = new StringTokenizer(tmp,", ");
while (st.hasMoreTokens()) {
StringTokenizer st2 = new StringTokenizer(st.nextToken(),"=");
hm2.put(st2.nextToken(),st2.nextToken());
}
Mais je ne sais absolument pas comment retrouver mon HashMap depuis le String ! Je suis tombé sur des fonctions de deserialization readObject qui prennent toutes des flux !
Merci d'avance.
Il faut parser la chaine je suppose.
Voila un code qui marche.
public class testparse {
public static void main (String args[]) { String str; HashMap hm = new HashMap(); hm.put("nom", "durand"); hm.put("prenom", "rené"); str = hm.toString(); System.out.println(hm);
HashMap hm2 = new HashMap(); String tmp = str.substring(1,str.length()-1); StringTokenizer st = new StringTokenizer(tmp,", "); while (st.hasMoreTokens()) { StringTokenizer st2 = new StringTokenizer(st.nextToken(),"="); hm2.put(st2.nextToken(),st2.nextToken()); }
System.out.println(hm2.toString()); }
}
ownowl
frandicz wrote:
Bonjour,
J'aimerais enregistrer un talbeau associatif sans trous (HashMap) dans une base SQL. Pour cela, j'ai besoin de le stocket sous forme de chaine (dans ce sens je serialize), et ensuite de deserializer pour obtenir un HashMap depuis un String.
J'arrive bien à serializer avec ceci: -- String str; HashMap hm = new HashMap(); // remplir le Hash map hm.put("nom", "durand"); hm.put("prenom", "rené"); str = hm.toString(); --
J'obtiens ceci: {nom=durand, prenom=rené}
Mais je ne sais absolument pas comment retrouver mon HashMap depuis le String ! Je suis tombé sur des fonctions de deserialization readObject qui prennent toutes des flux !
Merci d'avance.
Et pourquoi ne pas serializer directement l'Object HashMap (hm)
frandicz wrote:
Bonjour,
J'aimerais enregistrer un talbeau associatif sans trous (HashMap) dans
une base SQL. Pour cela, j'ai besoin de le stocket sous forme de chaine
(dans ce sens je serialize), et ensuite de deserializer pour obtenir un
HashMap depuis un String.
J'arrive bien à serializer avec ceci:
--
String str;
HashMap hm = new HashMap();
// remplir le Hash map
hm.put("nom", "durand");
hm.put("prenom", "rené");
str = hm.toString();
--
J'obtiens ceci:
{nom=durand, prenom=rené}
Mais je ne sais absolument pas comment retrouver mon HashMap depuis le
String ! Je suis tombé sur des fonctions de deserialization readObject
qui prennent toutes des flux !
Merci d'avance.
Et pourquoi ne pas serializer directement l'Object HashMap (hm)
J'aimerais enregistrer un talbeau associatif sans trous (HashMap) dans une base SQL. Pour cela, j'ai besoin de le stocket sous forme de chaine (dans ce sens je serialize), et ensuite de deserializer pour obtenir un HashMap depuis un String.
J'arrive bien à serializer avec ceci: -- String str; HashMap hm = new HashMap(); // remplir le Hash map hm.put("nom", "durand"); hm.put("prenom", "rené"); str = hm.toString(); --
J'obtiens ceci: {nom=durand, prenom=rené}
Mais je ne sais absolument pas comment retrouver mon HashMap depuis le String ! Je suis tombé sur des fonctions de deserialization readObject qui prennent toutes des flux !
Merci d'avance.
Et pourquoi ne pas serializer directement l'Object HashMap (hm)
flure
Et pourquoi ne pas serializer directement l'Object HashMap (hm)
Et pourquoi ne pas implémenter l'interface Serializable ? Ensuite il suffit de passer par un ObjectInputStream pour déserialiser et un ObjetOutputStream pour sérialiser ...
Bon, ok, je n'ai pas trouvé cela tout seul, c'est dans "Thinking in Java" de Bruce Eckel ...
-- Florent "flure" C. http://flure.free.fr
Et pourquoi ne pas serializer directement l'Object HashMap (hm)
Et pourquoi ne pas implémenter l'interface Serializable ? Ensuite il
suffit de passer par un ObjectInputStream pour déserialiser et un
ObjetOutputStream pour sérialiser ...
Bon, ok, je n'ai pas trouvé cela tout seul, c'est dans "Thinking in
Java" de Bruce Eckel ...
Et pourquoi ne pas serializer directement l'Object HashMap (hm)
Et pourquoi ne pas implémenter l'interface Serializable ? Ensuite il suffit de passer par un ObjectInputStream pour déserialiser et un ObjetOutputStream pour sérialiser ...
Bon, ok, je n'ai pas trouvé cela tout seul, c'est dans "Thinking in Java" de Bruce Eckel ...
-- Florent "flure" C. http://flure.free.fr
ownowl
flure wrote:
Et pourquoi ne pas serializer directement l'Object HashMap (hm)
Et pourquoi ne pas implémenter l'interface Serializable ? Ensuite il suffit de passer par un ObjectInputStream pour déserialiser et un ObjetOutputStream pour sérialiser ...
absolument, sauf qu'il est inutile implementer l'interface Serializable car HashMap l'implemente déjà
Bon, ok, je n'ai pas trouvé cela tout seul, c'est dans "Thinking in Java" de Bruce Eckel ...
flure wrote:
Et pourquoi ne pas serializer directement l'Object HashMap (hm)
Et pourquoi ne pas implémenter l'interface Serializable ? Ensuite il
suffit de passer par un ObjectInputStream pour déserialiser et un
ObjetOutputStream pour sérialiser ...
absolument, sauf qu'il est inutile implementer l'interface Serializable
car HashMap l'implemente déjà
Bon, ok, je n'ai pas trouvé cela tout seul, c'est dans "Thinking in
Java" de Bruce Eckel ...
Et pourquoi ne pas serializer directement l'Object HashMap (hm)
Et pourquoi ne pas implémenter l'interface Serializable ? Ensuite il suffit de passer par un ObjectInputStream pour déserialiser et un ObjetOutputStream pour sérialiser ...
absolument, sauf qu'il est inutile implementer l'interface Serializable car HashMap l'implemente déjà
Bon, ok, je n'ai pas trouvé cela tout seul, c'est dans "Thinking in Java" de Bruce Eckel ...
flure
absolument, sauf qu'il est inutile implementer l'interface Serializable car HashMap l'implemente déjà
Ah ok, désolé je ne savais pas :)
-- Florent "flure" C. http://flure.free.fr
absolument, sauf qu'il est inutile implementer l'interface Serializable
car HashMap l'implemente déjà
absolument, sauf qu'il est inutile implementer l'interface Serializable car HashMap l'implemente déjà
Ah ok, désolé je ne savais pas :)
-- Florent "flure" C. http://flure.free.fr
Sébastien
frandicz wrote:
Bonjour,
J'aimerais enregistrer un talbeau associatif sans trous (HashMap) dans une base SQL. Pour cela, j'ai besoin de le stocket sous forme de chaine (dans ce sens je serialize), et ensuite de deserializer pour obtenir un HashMap depuis un String.
J'arrive bien à serializer avec ceci: -- String str; HashMap hm = new HashMap(); // remplir le Hash map hm.put("nom", "durand"); hm.put("prenom", "rené"); str = hm.toString(); --
J'obtiens ceci: {nom=durand, prenom=rené}
Mais je ne sais absolument pas comment retrouver mon HashMap depuis le String ! Je suis tombé sur des fonctions de deserialization readObject qui prennent toutes des flux !
Merci d'avance.
S'appuyer sur la méthode toString() pour sérialiser un objet n'est pas propre et franchement dangereux (elle n'a rien de standard et peut changer). Il serait mieux que tu surcharge le writeObject et le readObject en étendant HashMap. Tu peux aussi te créer 2 méthodes utilitaires pour transformer une Map en string et inversement. Tout dépend du contexte d'utilisation.
Sébastien
frandicz wrote:
Bonjour,
J'aimerais enregistrer un talbeau associatif sans trous (HashMap) dans
une base SQL. Pour cela, j'ai besoin de le stocket sous forme de chaine
(dans ce sens je serialize), et ensuite de deserializer pour obtenir un
HashMap depuis un String.
J'arrive bien à serializer avec ceci:
--
String str;
HashMap hm = new HashMap();
// remplir le Hash map
hm.put("nom", "durand");
hm.put("prenom", "rené");
str = hm.toString();
--
J'obtiens ceci:
{nom=durand, prenom=rené}
Mais je ne sais absolument pas comment retrouver mon HashMap depuis le
String ! Je suis tombé sur des fonctions de deserialization readObject
qui prennent toutes des flux !
Merci d'avance.
S'appuyer sur la méthode toString() pour sérialiser un objet n'est pas propre et franchement
dangereux (elle n'a rien de standard et peut changer).
Il serait mieux que tu surcharge le writeObject et le readObject en étendant HashMap.
Tu peux aussi te créer 2 méthodes utilitaires pour transformer une Map en string et inversement.
Tout dépend du contexte d'utilisation.
J'aimerais enregistrer un talbeau associatif sans trous (HashMap) dans une base SQL. Pour cela, j'ai besoin de le stocket sous forme de chaine (dans ce sens je serialize), et ensuite de deserializer pour obtenir un HashMap depuis un String.
J'arrive bien à serializer avec ceci: -- String str; HashMap hm = new HashMap(); // remplir le Hash map hm.put("nom", "durand"); hm.put("prenom", "rené"); str = hm.toString(); --
J'obtiens ceci: {nom=durand, prenom=rené}
Mais je ne sais absolument pas comment retrouver mon HashMap depuis le String ! Je suis tombé sur des fonctions de deserialization readObject qui prennent toutes des flux !
Merci d'avance.
S'appuyer sur la méthode toString() pour sérialiser un objet n'est pas propre et franchement dangereux (elle n'a rien de standard et peut changer). Il serait mieux que tu surcharge le writeObject et le readObject en étendant HashMap. Tu peux aussi te créer 2 méthodes utilitaires pour transformer une Map en string et inversement. Tout dépend du contexte d'utilisation.