
- FlatBuffers 教程
- FlatBuffers - 首页
- FlatBuffers - 简介
- FlatBuffers - 模式
- FlatBuffers - 结构
- FlatBuffers - 表格
- FlatBuffers - 字符串
- FlatBuffers - 数字
- FlatBuffers - 布尔值
- FlatBuffers - 枚举
- FlatBuffers - 向量
- FlatBuffers - 结构体
- FlatBuffers - 联合
- FlatBuffers - 嵌套表格
- FlatBuffers - 默认值
- FlatBuffers - JSON到二进制
- FlatBuffers - 二进制到JSON
- FlatBuffers - 可变缓冲区
- FlatBuffers - 向后兼容性
- FlatBuffers - 语言独立性
- FlatBuffers 有用资源
- FlatBuffers - 快速指南
- FlatBuffers - 有用资源
- FlatBuffers - 讨论
FlatBuffers - 二进制到JSON
概述
JSON 是一种非常流行的网络数据传输格式。为了提供 JSON 兼容性,FlatBuffers 编译器 flatc 具有将源 JSON 转换为 FlatBuffers 二进制格式的选项,然后可以使用该格式反序列化最初由 JSON 表示的对象。我们在上一章FlatBuffers - JSON 到二进制中已经实践了这一点。现在,我们将执行反向操作,从 FlatBuffers 二进制文件中检索 JSON。
考虑上一章FlatBuffers - JSON 到二进制中创建的 theater.bin 文件。
以下是 FlatBuffers 编译器正确解释二进制数据所需的模式。
theater.fbs
namespace com.tutorialspoint.theater; table Theater { name:string; address:string; mobile:int; } root_type Theater;
生成 JSON
现在,让我们首先使用以下命令从我们的二进制文件 (**theater.bin**) 获取所需的 json (**theater.json**)。
flatc --json --raw-binary theater.fbs -- theater.bin
它将在当前文件夹中创建 theater.json,如下所示。
{ name: "Silver Screener", address: "212, Maple Street, LA, California", mobile: 12322224 }
严格模式
flatc 生成最小的 json。如果我们需要使用其他工具处理 JSON 并需要正确的带引号的标识符,则可以使用 **--strict-json**,如下所示
flatc --json --raw-binary theater.fbs -- theater.bin --strict-json
它将在当前文件夹中创建 theater.json,如下所示。
{ "name": "Silver Screener", "address": "212, Maple Street, LA, California", "mobile": 12322224 }
默认值
默认情况下,flatc 编译器忽略默认值,并且默认值不会存储在二进制表示中。因此,这些值也不会出现在 JSON 中。为了实现这一点,我们可以使用 **--defaults-json** 选项,如下例所示。
让我们将 mobile 值保留为 json 中的默认值。
theater.json
{ "name" : "Silver Screener", "address" : "212, Maple Street, LA, California", "mobile": 0 }
现在,让我们首先使用以下命令根据我们的模式 (**theater.fbs**) 获取 json (**theater.json**) 的 FlatBuffers 二进制表示。
flatc --binary theater.fbs theater.json
生成不带默认值的 JSON
现在,让我们首先使用以下命令从我们的二进制文件 (**theater.bin**) 获取所需的 json (**theater.json**)。
flatc --json --raw-binary theater.fbs -- theater.bin
它将在当前文件夹中创建 theater.json,如下所示。
{ name: "Silver Screener", address: "212, Maple Street, LA, California" }
生成带默认值的 JSON
现在使用 **--defaults-json** 选项生成 JSON。
flatc --json --raw-binary theater.fbs -- theater.bin --defaults-json
它将在当前文件夹中创建 theater.json,如下所示。
{ name: "Silver Screener", address: "212, Maple Street, LA, California", mobile: 0 }