2010-06-16 176 views
1

我想將Java HashMap序列化爲字符串表示形式。 HashMap將只包含像字符串和整數這樣的原始值。之後,這個字符串將被存儲到數據庫。如何恢復HashMap? 使用BeanUtils和接口Converter或使用JSON有意義嗎?什麼是從String轉換爲HashMap的最佳方式?

例如:

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

難道這就是人們使用Hibernate的原因嗎? – CPerkins 2010-06-16 12:25:16

+1

列表不是原始的。你看了objectinputstream和objectoutputstream嗎? – 2010-06-16 12:35:13

回答

1

使用JSON或XStream

+0

在這種情況下解析xml比JSON更昂貴 – eugenn 2010-06-16 11:58:50

0

傑裏博士是正確的,你應該做的是使用ObjectOutputStream序列化哈希映射。這將允許您將字節寫入數據庫BLOB類型列,然後您可以將其反序列化回原始對象。爲了重新使用累贅的陳詞濫調,爲什麼重新發明輪子?在這種情況下,您是否存在不想使用Java序列化的特定原因?

+0

我不想序列化爲二進制文件,因爲它會導致不同的沙漠化問題,它需要使用BLOB類型 – eugenn 2010-06-16 13:26:04

+0

嗯,如果使用BLOB不可行,那麼我會像JSON方式一樣,不是最好的,但效果很好。谷歌的GSON看起來可能會爲你製造詭計。它支持Java集合等...請在此處查看: http://sites.google.com/site/gson/gson-user-guide – 2010-06-16 17:20:42

相關問題