【发布时间】:2021-05-04 08:36:53
【问题描述】:
假设我有一个像这样的 fbs 方案:
table SomeItem
{
module_version:string;
message_id:[uint8];
some_other_id:[uint8];
event_time_us:uint64;
message:string;
}
这是一个例子,真正的结构要大得多。所以我需要从另一个模块以 fbs 格式获取这些数据,将其转换为 JSON,然后将其作为 HTTP 响应发送给客户端。
问题与那些二进制数据字段有关。据我所知,您不能发送带有原始二进制数据的 JSON,您必须对其进行编码(例如到 Base64)。我很乐意这样做,但前提是数据结构具有足够的复杂性。它太大了,使用内置的 flatbuffers Obj-To-JSON 转换器很容易,但是 flatbuffers 库不支持二进制数据字段的 Base64 编码/解码。
所以我只有一个选择:
手动创建 flatbuffers 对象的 JSON 表示并按我的意愿处理所有数据(将二进制数据字段转换为 base64 格式并放入 JSON),但这需要很长时间。
有没有办法简单地使用 flatbuffers 内置转换器并以某种方式将结果 JSON 传输到 HTTP 客户端?
【问题讨论】:
标签: c++ json binary flatbuffers