在messagepack中,从MapValue获取值时出错..请帮帮我

时间:2013-08-01 11:44:51

标签: java messagepack

我正在尝试使用messagpack.write(map)序列化地图。在使用messagepack.read(byte[])进行反序列化期间,我获得了MapValue。但我无法使用MapValue.get(key)获取值。看下面的这个问题

  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

1 个答案:

答案 0 :(得分:3)

您需要使用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")));