2010-06-16 1 views
1

Я хотел бы сериализовать Java HashMap для представления строк. HashMap будет содержать только примитивные значения, такие как string и integer. После этого эта строка будет сохранена в db. Как восстановить обратно 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

+1

список не примитив. Вы смотрели на objectinputstream и objectoutputstream? –

ответ

1

Использование JSON или XStream.

+0

разбирать xml дороже, чем JSON в этом случае – eugenn

0

Д-р Джерри прав, вам нужно сделать сериализацию хэш-карты с помощью ObjectOutputStream. Это позволит вам записать байты в столбец типа BLOB базы данных, а затем вы можете де-сериализовать его обратно к исходному объекту. Чтобы снова использовать усталое клише, зачем изобретать колесо? Есть ли конкретная причина, по которой вы не хотите использовать сериализацию Java в этом случае?

+0

Я не хочу сериализоваться как двоичный файл, потому что он приводит к различным проблемам опустынивания, и для этого требуется использовать тип BLOB – eugenn

+0

Хм, хорошо, если использование BLOB невозможно, тогда я как и JSON, но не самый лучший, но хорошо работает. Google GSON выглядит так, как будто это может сделать трюк для вас. Он поддерживает коллекции java и т. Д. ... проверьте здесь: http://sites.google.com/site/gson/gson-user-guide –

Смежные вопросы