ProtoBuf协议 使用总结《动态加载*.proto文件 通过反射遍历所有子属性》提供一个简易的封装

概要

https://github.com/yxinyi/DynamicProtoBufParse

本文章是使用protobuf反射的一个总结,假定阅读者已经会搭建proto环境并且已会生成.pb.h文件,阅读完本篇,你会得到以下几个问题的解决方案的参考:

  1. Proto 的正常使用

  2. 对定义的任意结构进行遍历

  3. 在没有通过protoc.exe生成头文件的情况下,通过动态加载*.proto.来进行结构对象的生成,并可以使用反射机制进行修改

为了测试所有常用类型,后续所有结构皆用下面定义
syntax = "proto3";

message SubEx {
	uint64           sub_uint64           = 1;
	int64            sub_int64            = 2;
	uint32           sub_uint32           = 3;
	int32            sub_int32            = 4;
	double           sub_double           = 5;
	float            sub_float            = 6;
	string           sub_string           = 7;
	bool             sub_bool             = 8;	
	map<int32,int32> sub_map              = 9;	
	repeated uint64  sub_repeated_uint64  = 10;
	repeated int64   sub_repeated_int64   = 11;
	repeated uint32  sub_repeated_uint32  = 12;
	repeated int32   sub_repeated_int32   = 13;
	repeated double  sub_repeated_double  = 14;
	repeated float   sub_repeated_float   = 15;
	repeated string  sub_repeated_string  = 16;
	repeated bool    sub_repeated_bool    = 17;
}
 
message Example {
	uint64 		     ex_uint64           = 1;
	int64  		     ex_int64            = 2;
	uint32 		     ex_uint32           = 3;
	int32  		     ex_int32            = 4;
	double 		     ex_double           = 5;
	float  		     ex_float            = 6;
	string 		     ex_string           = 7;
	bool   		     ex_bool             = 8;	
	map<int32,int32> ex_map              = 9;	
	repeated uint64  ex_repeated_uint64  = 10;
	repeated int64   ex_repeated_int64   = 11;
	repeated uint32  ex_repeated_uint32  = 12;
	repeated int32   ex_repeated_int32   = 13;
	repeated double  ex_repeated_double  = 14;
	repeated float   ex_repeated_float   = 15;
	repeated string  ex_repeated_string  = 16;
	repeated bool    ex_repeated_bool    = 17;
	
}
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值