Python自动将json转换为protobuf的方法

发布时间:2020-04-07编辑:脚本学堂
本文介绍了python如何自动将json转换为protobuf的方法,如果测试脚本用Python来写的话,一般的做法是用的Python调用json模块中函数解析json文件,然后新建protobuf对象,依次填写各字段,然后发送出去。

在功能测试或集成测试中,用json造输入数据,然后moc测试脚本将json转化为protobuf发送给被测试模块或服务,是非常常见的功能测试手段。
如果测试脚本用python来写的话,一般的做法是用的Python调用json模块中函数解析json文件,然后新建protobuf对象,依次填写各字段,然后发送出去。
当然如果愿意造上面的轮子也没关系,如果想偷懒也是可行的,pbjson.py脚本就为你干这事提供了温床,下面会介绍这个过程:
1、造json文件,内容如下:
 

复制代码 代码示例:
#vi testjson2pb.json
{
    "name":"scq",
    "age":30,
    "work_unit":"taobao",
    "class_mate":[
{
    "name":"jim",
    "age":30
}
    ]
}

2、造protobuf文件:
 

复制代码 代码示例:
#vi testjson2pb.proto
//class mate
package json2pb;
message PersonInfo {
    //my name
    required string name = 1;
    //my age
    optional int32 age = 2;
    //my work unit
    optional string work_unit = 3;
    message ClassMate {
//name
optional string name = 1;
//age
optional uint32 age = 2;
    }
    repeated ClassMate class_mate = 4;
}

3、生成protobuf对应python文件:
 

复制代码 代码示例:
#protoc -I=. --python_out=. testjson2pb.proto
testjson2pb_pb2.py

4、测试例子:
 

复制代码 代码示例:

#vi testjson2pb.py
#!/usr/bin/env python
# coding=utf-8

import sys
import logging
import os
import time
import string
import pbjson
import simplejson
import testjson2pb_pb2

def main():
    f = file("testjson2pb.json")
    s = simplejson.load(f)
    f.close
    t = pbjson.dict2pb(testjson2pb_pb2.PersonInfo, s)
    print t

if __name__  ==  "__main__":
    main()

5、执行脚本,结果如下:
#python testjson2pb.py

如下图:python如何自动将json转换为protobuf

很简单,自从有了这个脚本,再用不用担心人肉从json生成protobuf的问题了。