通常在公司的后台服务架构上,有很多进程服务,这些进程服务RPC又经常用谷歌的protobuf格式沟通。
但是工作上我又碰到了另一个使用场景:业务上线了一些h5活动页面,这些活动页面发请求都是用http+json格式传输。
所以我需要高速前端h5,,接口的json定义是什么样子的。
那么如果把proto类型文件转成json文件给前端呢,当然可以手写,但是这不是程序员该做的事,能用机器脚本做的就不应该用手动去做。
这里有个工程:https://github.com/boatingfisher/protobuf-json
我们先把他下载下来:git clone https://github.com/boatingfisher/protobuf-json
protobuf_json_writer.py 这就是我们的转化脚本的主角。提供了一个proto2json方法。这个方法把一个pb的python对象转化成json。
安装pip 的protobuf库,注意的是因为转化脚本是基于python2开发的,所以这里需要注意pip是使用python2的那个pip,而不是pip3。使用了--upgrade确保下载了最新的protobuf。
pip uninstall protobuf python3-protobuf
pip install --upgrade pip
pip install --upgrade protobuf
安装完查看protobuf版本
然后你的linux还需要安装protoc命令,
最新的二进制包在这里下载到,https://github.com/protocolbuffers/protobuf/releases
wget https://github.com/protocolbuffers/protobuf/releases/download/v3.12.4/protoc-3.12.4-linux-x86_64.zip
然后解压zip包
unzip protoc-3.12.4-linux-x86_64.zip -d protoc-3.12.4
里面的bin目录有个二进制
拷贝到/usr/local/bin
cp protoc-3.12.4/bin/protoc /usr/local/bin/
查看安装的版本号:
这里要确保的是pip安装的protobuf版本号要高于protoc的版本号。
要不然可能会出现这个错误:
protoc --proto_path=src/ --python_out=build/gen src/test.proto
然后test.proto会生成一个test_pb2.py文件
首先我们有个protoc文件test.proto
然后修改test_writer.py。
要改动的是test_pb2是你的3.2步骤生成的python文件名字。
然后执行python2 test_write.py,会看到类似json输出
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。