python中protobuf和json互相转换应用处理方法 |
||||||||
+ 目录在实际信息系统开发中,经常会用到各种各样的协议,网络协议常用的有http,tcp,udp等,传输数据格式协议有json,xml,TLV等。本节将给大家介绍一种节省带宽数据协议,谷歌的ProtoBuf协议,该协议由于是开源免费的,有多种语言的调用接口,比如常见C,C++,java,Python,C#,PHP ... 所以国内很多公司都在使用。 本人所在项目引擎使用C++语言开发,外部输入的protobuf字节流在内部都是使用C++来处理,上次客户端想要用他们的数据来演示效果,让我去客户现处理客户数据,然后导入我们引擎进行效果展示。客户现场数据是excel文件,出差时没有相关的处理工具,本人只好现场开发,提取客户excel中的数据,转换成json,再转换成我们引擎能够识别的ProtoBuf字节流。所以在此记录一下python中protobuf和json的相互转换的处理方法。 protobuf目前有proto2和proto3两个版本,本文所介绍的是基于proto3,在Python 3.6.9环境下运行。
1.ProtoBuf中定义字段与各语言类型对应表
2.ProtoBuf使用方法
2.1 下载安装protobuf生成器protobuf生成器可以通过源码编译得到,也可以下载别人编译好的应用程序 GitHub上下载地址如下 GitHub - protocolbuffers/protobuf: Protocol Buffers - Googles data interchange format
2.2 定义protobuf格式的应用协议下面以公司为业务构造协议,举例如下: message.proto
?
2.3 生成协议调用api在Python中,生成方式如下:
?
或者
?
附C++生成方式如下: /home/test/protobuf/bin/protoc -I=/home/test/cpp --cpp_out=/home/test/cpp message.proto 或者 说明: --python_out表示生成Python调用的接口 --cpp_out表示生成C++调用的接口
2.4 调用引入protobuf库和2.3生成的接口,就可以进行自己的业务开发了
3. Json转Protobuf调用举例如下:
?
|