2010-06-16 86 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

相关问题