node 如何处理 google.protobuf.Any
这是 proto 文件
复制代码
使用 protobufjs,需要使用如下命令安装,
npm install protobufjs --save
下面的代码是一个 DEMO 程序
复制代码
版权声明: 本文为 InfoQ 作者【werbenhu】的原创文章。
原文链接:【http://xie.infoq.cn/article/89e8f9c4d3711a8be763394c0】。文章转载请联系作者。
本文字数:664 字
阅读完需:约 2 分钟
这是 proto 文件
syntax = "proto3";
import "google/protobuf/any.proto";
message MyMessage { string name = 1; google.protobuf.Any details = 2;}
message Person { string name = 1; int32 age = 2;}
message Address { string city = 1; string country = 2;}使用 protobufjs,需要使用如下命令安装,
npm install protobufjs --save
下面的代码是一个 DEMO 程序
const protobuf = require("protobufjs");
// 加载 .proto 文件const root = protobuf.loadSync("example.proto");
// 获取消息类型const MyMessage = root.lookupType("MyMessage");const Person = root.lookupType("Person");const Address = root.lookupType("Address");
// 创建一个 Person 消息const person = Person.create({ name: "John", age: 30 });
// 序列化为二进制const personBuffer = Person.encode(person).finish();const Any = root.lookupType("google.protobuf.Any");const anyPerson = Any.create({ type_url: "type.googleapis.com/Person", // 这个 URL 约定使用 package.name value: personBuffer});
// 创建一个 MyMessage 消息,并嵌入 Any 类型const myMessage = MyMessage.create({ name: "Example", details: anyPerson,});
// 序列化 MyMessageconst buffer = MyMessage.encode(myMessage).finish();console.log("Serialized buffer:", buffer);
// 反序列化 MyMessageconst decodedMessage = MyMessage.decode(buffer);console.log("Decoded message:", decodedMessage);
版权声明: 本文为 InfoQ 作者【werbenhu】的原创文章。
原文链接:【http://xie.infoq.cn/article/89e8f9c4d3711a8be763394c0】。文章转载请联系作者。
还未添加个人签名 2018-01-08 加入
还未添加个人简介

促进软件开发及相关领域知识与创新的传播
京公网安备 11010502039052号 | 产品资质



评论