本篇文章为你整理了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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。