安装 protobufjs
npm install -g protobufjs
lm.message.proto
package lm;
message helloworld
{
required int32 id = 1; // ID
required string str = 2; // str
optional int32 opt = 3; //optional field
}
转成相应的json文件
pbjs src/lm.message.proto -t json > src/lm.message.json
lm.message.json
{
"nested": {
"lm": {
"nested": {
"helloworld": {
"fields": {
"id": {
"rule": "required",
"type": "int32",
"id": 1
},
"str": {
"rule": "required",
"type": "string",
"id": 2
},
"opt": {
"type": "int32",
"id": 3
}
}
}
}
}
}
}
读取json文件 并进行protobuf 编码 解码
var protobuf = require("/usr/local/lib/node_modules/protobufjs");
var jsonDescriptor = require("./lm.message.json"); // exemplary for node
var root = protobuf.Root.fromJSON(jsonDescriptor);
var payload = { id: 1,
str : "7888",
opt : 55 };
var helloInfo = root.lookupType("lm.helloworld");
var errMsg = helloInfo.verify(payload);
if (errMsg)
throw Error(errMsg);
var newHello = helloInfo.create(payload);
var buffer = helloInfo.encode(newHello).finish();
var message = helloInfo.decode(buffer);
console.log(message);