【问题标题】:When converting flatbuffers object to JSON, how to deal with binary data?将 flatbuffers 对象转换为 JSON 时,如何处理二进制数据?
【发布时间】: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


    【解决方案1】:

    [uint8] 转换为 JSON 后将显示为列表,例如[1, 2, 3],其中每个数字代表一个字节。

    试试flatc --json myschema.fbs -- myflatbuffer.bin

    通常,FlatBuffers 可以将任何数据转换为 JSON。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-02
      • 1970-01-01
      • 1970-01-01
      • 2016-08-08
      • 2010-11-20
      • 2011-03-17
      相关资源
      最近更新 更多