【发布时间】:2023-01-29 04:36:03
【问题描述】:
我正在尝试使用 protobuf 来加速我的前端和后端之间的数据传输。
作为 POC,我尝试加载一个 JSON 文件,将其转换为 protobuf 缓冲区,并将结果保存在一个新文件中。
但事实证明,新文件比 JSON 文件重。我做错什么了吗?
这是我的文件:
// input.proto
syntax = "proto3";
message MyData {
repeated float a = 1;
repeated float b = 2;
repeated float c = 3;
float d = 4;
repeated float e = 5;
}
// index.mjs
import protobuf from 'protobufjs';
import fs from 'fs';
protobuf.load('./input.proto', (err, root) => {
const payload = JSON.parse(fs.readFileSync('./input.json', {encoding: 'utf8'}));
var Message = root.lookupType("MyData");
var errMsg = Message.verify(payload);
if (errMsg)
throw Error(errMsg);
var message = Message.create(payload);
const buffer = Message.encode(message).finish();
fs.writeFileSync('./output.pb', buffer, 'binary');
}, () => {
});
// input.json
{
"a": [1, 2.4, 3, 4],
"b": [1, 2, 3, 4],
"c": [1, 2, 3.2, 4],
"d": 10.321,
"e": [1, 2, 3.7, 4],
}
(我实际的 json 比那个大得多,但它遵循与这个相同的格式)
最后:
$ du -h input.json output.pb
2,0M input.json
2,5M output.pb
谢谢你的帮助!
【问题讨论】:
标签: node.js json protocol-buffers protobuf.js