版本3.13.0
因为google/protobuf/any.proto,不带option optimize_for = LITE_RUNTIME;且没有编译到lite版中,所以我们自己实现一个any

syntax = "proto3";option optimize_for = LITE_RUNTIME;message VdiAny {string type_url = 1;bytes value = 2;
}

原样拷贝过来加上option optimize_for = LITE_RUNTIME;

生成对应的message类,在生成的类中加上packFrom和unPackTo

  template <typename T, class = typename std::enable_if<std::is_convertible<T, const ::PROTOBUF_NAMESPACE_ID::MessageLite&>::value>::type>void PackFrom(const T& message) {_any_metadata_.PackFrom<T>(message);}template <typename T, class = typename std::enable_if<std::is_convertible<T, const ::PROTOBUF_NAMESPACE_ID::MessageLite&>::value>::type>void PackFrom(const T& message,const std::string& type_url_prefix) {_any_metadata_.PackFrom<T>(message, type_url_prefix);}template <typename T, class = typename std::enable_if<std::is_convertible<T, const ::PROTOBUF_NAMESPACE_ID::MessageLite&>::value>::type>bool UnpackTo(T* message) const {return _any_metadata_.UnpackTo<T>(message);}//添加一个成员变量
::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata _any_metadata_;//构造函数中添加成员变量的初始化
VdiAny::VdiAny(::PROTOBUF_NAMESPACE_ID::Arena* arena): ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) ,_any_metadata_(&type_url_, &value_) {    //调用成员变量的构造函数SharedCtor();RegisterArenaDtor(arena);// @@protoc_insertion_point(arena_constructor:VdiAny)
}

demo

syntax = "proto3";//import "google/protobuf/any.proto";import "vdiAny.proto";option optimize_for = LITE_RUNTIME;message Apply_data
{uint32 apply_data_id = 1;uint64 apply_time = 2;
}message Apply_list
{uint32 apply_list_id = 1;
}message Test
{int32                   id = 1;VdiAny                     data = 2;
}
  Test test;Apply_data data;data.set_apply_data_id(111);Apply_list list;list.set_apply_list_id(222);//设置any数据ZTSLOG(INFO, "set apply_data data:");test.mutable_data()->PackFrom(data);if (test.data().Is<Apply_data>()) {//解析if (test.data().UnpackTo(&data1)) {ZTSLOG(INFO, data1.apply_data_id());ZTSLOG(INFO, "unpackTo data success");}else {ZTSLOG(INFO, "unpackTo data error");}}else {ZTSLOG(INFO, "is not apply_data");}

ProtoBuf lite版中使用Any相关推荐

  1. confluence 编辑器这次没有加载_玩转爱普生打印机自带的任务编辑器Lite版

    爱普生打印机往往能给我们的日常使用带来惊喜,比如智能墨滴变换技术(带来更平滑更精细的图案输出).导电胶吸附纸粉(A4纸的纸粉往往是造成喷墨打印机喷头频繁堵塞断线的罪魁祸首).以及最近两年的微信打印方案 ...

  2. ndk编译protobuf精简版(lite版)

    得到的结果是protobuf的完整版,由于小弟用的protobuf的版本是2.4.1,那么问题就出现了 ptorobuf2.4.1支持的Android系统版本至少为2.3(2.3以下启动时黑屏,一直黑 ...

  3. 【SylixOS之更新LITE版Base方式】

    1.适用范围 本文档面向SylixOS Lite版程序开发工程师和相关测试人员,协助解决开发或测试过程中需要更换Lite版Base版本问题. 2.原理概述 最新的SylixOS源码库可从git://s ...

  4. 掌上围脖LITE版更新到1.1

    原文地址为: 掌上围脖LITE版更新到1.1 一些小更新: 1. 修改了字数提示会遮挡输入文字的问题 2. 在列表界面对含有图片的围脖增加了小图标提示 3. 围脖中的图片比以前大了些 上图:   国际 ...

  5. 为了出货量华为拼了,P30 lite版也将上三摄像头

    预计今晚华为将在MWC2019发布新款旗舰手机P30,普遍认为被认为是廉价版的P30 lite应该不会在发布会上出现,而会直接发售,从网友发布的消息指P30 lite(在国内市场或许将以Nova系列发 ...

  6. 小米10 Lite版出击欧洲市场,希望填补华为空缺

    10海外版正式发布,其中小米10.小米10 Pro的定价与华为P40一致,值得注意的是小米还发布了小米10 Lite.小米10 Lite定价仅为349欧元起,只有小米10的43.7%,柏铭科技认为小米 ...

  7. candence 安装好lite版怎么转标准版

    @candence 安装好lite版怎么转标准版TOC 1,安装过程中出现找不到C++ 2005文件 解决办法:下载一个Windows Installer Clean up,清楚掉之前的c++2005 ...

  8. IDEA中提示:Warning:java: 源值1.5已过时, 将在未来所有发行版中删除

    问题描述: 运行Java Web项目时,IDEA中提示:Warning:java: 源值1.5已过时, 将在未来所有发行版中删除 解决方法: 1. 打开[File]-[Project Structur ...

  9. ASP Win7旗舰版中的IIS配置asp.net的运行环境

    以前弄过好多次,都没有成功,昨天晚上不知怎么地就成功了,借用我同学的一句话,这叫"灵光一闪",废话不多说了,这个成功是有图有视频有真相地哈! 这篇博文发表都三个月了,我自认为算是很 ...

最新文章

  1. VMWare 虚拟机启动报“内部错误”的解决办法
  2. cs4 php,php dreamweaver cs4
  3. hbase scan超时设置_HBase学习之路 (六)过滤器
  4. 批量读写变换图片(转)
  5. 【Flink】Flink报错 Could not forward element to next operator
  6. python如何使用matlab_MATLAB中的mrdivide函数:它在做什么,以及在Python中如何做?...
  7. opencv-Haar特征
  8. esp8266电池供电方案_(普通照明、应急照明、事故照明)方案解读
  9. [刘润五分钟商学院]-----工具类
  10. format mla_MLAFormatMLA格式解读
  11. myd导入mysql_数据库是.frm,.myd,myi备份如何导入mysql
  12. Delft3d GRD及ENC问题
  13. vb.net LPT端口 开钱箱和小票纸打印超时问题解决办法
  14. linux关键vi按什么键n,linux vi 使用方法
  15. labelimg标注yolo格式Bug
  16. 一篇最通俗易懂的性能调优总结,这篇就够了
  17. 人人都能看懂的Spring源码解析,Spring如何解决循环依赖
  18. c++ 每个类都有一张虚方法表
  19. 专题地图制作之POI获取
  20. 智能家居与AI测试之:语音通讯

热门文章

  1. 【mba市场营销论文】金元证券海口营业部市场营销战略分析(节选)
  2. Cross-Origin Read Blocking (CORB) blocked cross-origin response
  3. rp原型中鼠标悬停显示图片_悬停状态原型4种方式
  4. 为什么说智能改变生活,智慧停车给人们的生活带来了哪些便利?
  5. 单机版加密狗/锁与网络版加密狗/锁的区别
  6. 前端面试题总结(PS:尊重劳动成果拿或者要原笔记记得滴滴)
  7. oracle数据库连接失败1017,升级12C注意事项: 连接失败 ORA-28040 ORA-1017
  8. 2020小迪安全第六天笔记-加密算法
  9. 微信公众平台发布小程序数据助手 可查看运营数据
  10. MS7024 TV编码器 8、16、24bit数字信号转AV/S-Video