下载链接 :
https://github.com/protocolbuffers/protobuf/releases //找到对应版本Assets中,下载win64zip
or
网盘提取【version:3.20.1】
链接:https://pan.baidu.com/s/1l2-BBdj5uvVcpSWMi0_4eQ
提取码:pezp
配置环境变量 :
将下载下来的文件解压后 将bin路径添加到系统环境变量内
测试是否成功加入变量
protoc --version
使用
1.定义结构【可先安装protocbuf插件 提示语法】
syntax = "proto3";
package liuxiaokang;
message Person{
string name = 1;
int32 age = 2;
}
message Info{
string method = 1;
string payload = 2;
}
2.转换
protoc --python_out=. v1.proto
2-1过程报错
v1.proto:7:17: Field number 1 has already been used in "protobuf_tool.Person" by field "name".
原因:
message Person{
string name = 1;
int32 age = 1;
}
不允许存在变量赋予同样的值
解决措施:
message Person{
string name = 1;
int32 age = 2;
}
3.序列化与反序列化
# 创建对象转换成字节 后续用于网络传输(序列化)
from v1_pb2 import Person, Info
p1 = Person()
p1.name = 'liuxiaokang'
p1.age = 18
p_info = p1.SerializeToString()
# print(p_info) 序列化后结果
# 2.根据字节转化回对象 用于业务处理(反序列化)
obj = Person()
obj.ParseFromString(p_info)
print(obj.name)
print(obj.age)
print(dir(obj))