2013-08-01 2 views
1

Я пытаюсь сериализовать карту, используя messagpack.write(map). Во время десериализации с использованием messagepack.read(byte[]) я получил MapValue. Но я не могу получить значения, используя MapValue.get(key). Посмотрите эту проблему нижеВ messagepack ошибка при получении значения из MapValue .. Пожалуйста, помогите мне

HashMap<Object,Object> map = new HashMap<Object, Object>(); 
    map.put(1,"ONE"); 
    map.put("ONE","TWO"); 
    MessagePack m= new MessagePack(); 
    byte[] b = m.write(map); 
    MessagePack m1 = new MessagePack(); 
    MapValue value = (MapValue)m1.read(b); 
    System.out.println(value);// here I am getting {1:"ONE",2:"TWO"} 

System.out.println(value.get(1)); // printing the value for key 1. I am getting null. 

Пожалуйста, помогите с этим .. Спасибо.

Nausadh

+0

Что такое 'MapValue'? показать источник «MapValue» ... почему 'read (b)' возвращает «MapValue»? и, пожалуйста, введите код! – sanbhat

+0

Я никогда не слышал о «MessagePack». Возможно, вы должны добавить какой-то контекст. – MightyPork

+0

Что такое MapValue и MessagePack? Можете ли вы дать их реализации? – Filip

ответ

2

Вы должны использовать ValueFactory и конвертировать ключ использовать интерфейс Value. Это не очень интуитивно понятно

// instead of value.get(1) use following 
System.out.println(value.get(ValueFactory.createIntegerValue(1))); 

// if the key would be a String use: 
System.out.println(value.get(ValueFactory.createRawValue("key"))); 
+0

Добро пожаловать в SO. Не могли бы вы добавить объяснение в свой ответ? – cabad