const ProtoBuf = require("protobufjs");
const fs = require('fs');
// 从 .proto 文件创建消息类型对象
const root = ProtoBuf.loadSync(`path/to/your_file.proto`);
const MyMessageType = root.lookupType(`packageName.messageTypeName`);
// 将 JSON 转换为字节流(Buffer)
function jsonToBytes(json) {
const message = MyMessageType.create(json); // 根据消息类型创建新的消息对象
return MyMessageType.encode(message).finish(); // 编码成字节流
}
// 将字节流转换为 JSON
function bytesToJson(bytes) {
const message = MyMessageType.decode(bytes); // 解码字节流得到消息对象
return MyMessageType.toObject(message, { longs: String }); // 返回 JSON 格式的消息内容
}
// 示例:将JSON转换为字节流
const myData = { field1: "value1", field2: "value2" };
const buffer = jsonToBytes(myData);
console.log(buffer);
// 示例:将字节流转换为JSON
const parsedData = bytesToJson(buffer);
console.log(parsedData);