写点什么

node 如何处理 google.protobuf.Any

作者:werbenhu
  • 2025-02-12
    广东
  • 本文字数: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);
复制代码


发布于: 刚刚阅读数: 4
用户头像

werbenhu

关注

还未添加个人签名 2018-01-08 加入

还未添加个人简介

评论

发布
暂无评论
node如何处理google.protobuf.Any_JavaScript_werbenhu_InfoQ写作社区