protobuf怎么处理java中的Object和Object[],protobuf的bytestring和object[](object._proto_)

  本篇文章为你整理了protobuf怎么处理java中的Object和Object[],protobuf的bytestring和object[](object._proto_)的详细内容,包含有protobuffer java object._proto_ object.__proto__ object.prototype.__proto__ protobuf怎么处理java中的Object和Object[],protobuf的bytestring和object[],希望能帮助你了解 protobuf怎么处理java中的Object和Object[],protobuf的bytestring和object[]。

  话不多说,直接说解决方案。

  这里使用bytestring,如果是object[]的话则用repeated定义即可。

  

  那么问题又来了,用这个类型怎么做到与java中的object完全转换呢?

  目前,作者发现bytestring对于java的object没有现成的序列化和反序列化方案,so直接用java中的对象输入流。

  代码示例如下:

  

Object[] objects = new Object[]{"string", 9, %, 3.2f, true, 5.1d, false};
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject(objects);
byte[] byteArray = bos.toByteArray();
//ByteString bytes = ByteString.copyFrom(byteArray); //protobuf的包
//反序列化由bytestring转为object
//bytes.toByteArray(); //protobuf的包
ByteArrayInputStream byteInt = new ByteArrayInputStream(byteArray);
ObjectInputStream objInt = new ObjectInputStream(byteInt);
Object o = objInt.readObject();
System.out.println(o);

 

  

 

 

  

  

 

 

  这里可以看到是可以序列化与反序列化的。需要注意的点是对象输入流需要的二进制要用对象输出流的byte数组。因为自定义的byte数组不一定符合对象输入流的规则,也就不能解析出对象了。(就是流中的一些前缀)

  如果有帮助劳烦点个赞~

  

  

 

 

  

  

 

 

  

 

 

  

  以上就是protobuf怎么处理java中的Object和Object[],protobuf的bytestring和object[](object._proto_)的详细内容,想要了解更多 protobuf怎么处理java中的Object和Object[],protobuf的bytestring和object[]的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: