2010-06-16 19 views
1

Je voudrais sérialiser un Java HashMap en représentation de chaîne. La HashMap ne contient que des valeurs primitives telles que string et integer. Après que cette chaîne sera stockée à DB. Comment restaurer le HashMap? Est-il logique d'utiliser BeanUtils et d'interface Converter ou utiliser JSON?Quelle est la meilleure façon de convertir de la chaîne en HashMap?

Par exemple:

List list = new ArrayList(); 
    list.add(new Long(1)); 
    list.add(new Long(2)); 
    list.add(new Long(4)); 

    Map map = new HashMap(); 
    map.put("cityId", new Integer(1)); 
    map.put("name", "test"); 
    map.put("float", new Float(-3.2)); 
    map.put("ids", list); 

    map.toString() -> {float=-3.2,ids=[1, 2, 4],name=test,cityId=1} 
    map.toJSON ->  {"float":-3.2,"ids":[1,2,4],"name":"test","cityId":1} 
+0

N'est-ce pas pourquoi les gens utilisent Hibernate? – CPerkins

+1

une liste n'est pas une primitive. Avez-vous regardé objectinputstream et objectoutputstream? –

Répondre

1

Utilisez JSON ou XStream.

+0

l'analyse XML est plus cher que JSON dans ce cas – eugenn

0

Dr Jerry a raison, ce que vous devez faire est de sérialiser la table de hachage en utilisant ObjectOutputStream. Cela vous permettra d'écrire les octets dans une colonne de type BLOB de base de données et vous pourrez ensuite la dé-sérialiser vers votre objet d'origine. Pour réutiliser un cliché fatigué, pourquoi réinventer la roue? Y a-t-il une raison spécifique pour laquelle vous ne voulez pas utiliser la sérialisation Java dans ce cas?

+0

Je ne veux pas sérialiser comme un binaire car il conduit à différents problèmes de désertification et il faut utiliser un BLOB de type – eugenn

+0

Hmm, ok si l'utilisation d'un BLOB n'est pas réalisable, alors je comme le JSON, pas le meilleur, mais ça marche bien. Le GSON de Google semble pouvoir faire l'affaire pour vous. Il prend en charge les collections Java, etc ... vérifier ici: http://sites.google.com/site/gson/gson-user-guide –