java - 在消息包中,从 MapValue 获取值时出错。请帮助我

标签 java messagepack

我正在尝试使用 messagpack.write(map) 序列化 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.

请帮忙解决这个问题。谢谢。

诺萨德

最佳答案

您需要使用 ValueFactory 并转换 key 才能使用 Value 接口(interface)。这不太直观

// 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")));

关于java - 在消息包中,从 MapValue 获取值时出错。请帮助我,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17993145/

相关文章:

c# - 在 C# 应用程序中使用 MsgPack 自定义序列化程序

objective-c - MsgPack 无法消息打包 NSData 对象

java - 在调用所有 setter 添加额外字段后获取回调?

java - sqlite无法打开数据库

java - 为什么Java中的DataInput接口(interface)没有readUnsignedInt方法

java - 不可变业务对象和 MessagePack 消息之间的自动转换

java - 为什么 try-with-resources 会破坏 Emacs 中的缩进?”

java - 如何检查 Java 8 Stream 是否为空?

java - MessagePack Java 序列化为数组