protobuf怎么处理java中的Object和Object[],protobuf的bytestring和object[]
2024-09-08 15:53:06
如题,作者一开始也遇到了这个比较棘手的问题。
话不多说,直接说解决方案。
这里使用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数组不一定符合对象输入流的规则,也就不能解析出对象了。(就是流中的一些前缀)
如果有帮助劳烦点个赞~
最新文章
- HAproxy配置文件操作
- Echarts的相关问题记录与应用
- Python读取xml报错解析--ExpatError: not well-formed (invalid token)
- Cocos2d-x PluginX (二)增加新的Plugin
- git中ssh配置方法
- 关于python中PIL的安装
- POJ-2378 Tree Cutting
- 一张图看Google MVP设计架构
- lightoj 1017
- ASP.NET - 使用 XML
- mysql5.6.16绿色版配置、运行
- JVM内存管理学习总结(一)
- ueditor 和 umeditor 粘贴过滤问题
- 更好的小票打印体验,huanent.printer2.0发布
- [Swift]LeetCode685. 冗余连接 II | Redundant Connection II
- 2019/2/11 LinuxRPM包管理
- skype客户端搜不到联系人解决办法
- hive之案例分析(grouping sets,lateral view explode, concat_ws)
- python【数据类型:字典】
- 【JSP】jsp报错:Syntax error, insert ";}"; to complete MethodBody
热门文章
- db2iupgrade / db2ckupgrade failure due to SQL0551N
- 全国分乡镇第七次人口普查数据shp数据库省市区县街道
- nginx auth_basic uwsgi 目录简易认证。
- Bug_Android error: duplicate attribute. (错误:重复属性。)
- el-dialog 嵌套子组件数据不刷新
- axios请求拦截封装理解
- springboot+vue本地部署
- sql-SQL Prompt
- 安装并学习git的基本使用;注册Github账号,并创建仓库,编辑自我介绍,并提交commit
- 高性能的StampedLock锁