部分 flatbuffers 数据到 json
Part of flatbuffers data to json
具有序列化对象 monster
的二进制数据,其中 monster
类型为:
table Monster {
name:string;
color:Color;
weapon:Weapon; <--- serialize to json only this, discard other properties
}
能不能直接只把weapon
转成json,其他的字段都舍弃了?
注意我的二进制数据是 Monster
类型。似乎序列化 weapon
的唯一方法是通过递归复制所有属性然后调用 json 序列化函数从 monster->weapon
构建单独的 Weapon
对象。
- Weapon 可以是字符串对象而不是Weapon 对象。该字符串可以解释为 JSON.
- 或者将字节数组作为武器类型,以放置任何二进制文件流。
- 或者更好地使用 flex-buffer 代替 json 以方便 json 但效率更高。
或者如果你不想改变你的模式,但仍然想要武器 json:
- 使用 flatc 提供的 json 转换实用程序将完整的 fb 数据转换为 json。
- 只需从完整的 json 中选择解析武器节点供您使用。
将二进制转换为 JSON 的函数 GenerateText
目前采用缓冲区指针,而不是根,因此不适用于您的用例。但是,如果您查看该函数的实现,则可以轻松创建这样的函数。
新的 "mini reflection" 功能可能更简单(请参阅评论和功能 minireflect.h
)。这将允许您从任何 FlatBuffers table 生成 JSON,甚至不需要模式解析器。
- 使用
--gen-object-api
编译你的 fbs 文件
- 这将产生
WeaponT
class 和其他 *T
classes
- 使用
monster->weapon()->UnpackTo(..)
方法填充WeaponT
实例
- 运行
Weapon::Pack(fbb, &weaponT)
序列化回一个新的 fbb 对象
- 运行
GenerateText
在最后一步创建的 fbb 对象上
具有序列化对象 monster
的二进制数据,其中 monster
类型为:
table Monster {
name:string;
color:Color;
weapon:Weapon; <--- serialize to json only this, discard other properties
}
能不能直接只把weapon
转成json,其他的字段都舍弃了?
注意我的二进制数据是 Monster
类型。似乎序列化 weapon
的唯一方法是通过递归复制所有属性然后调用 json 序列化函数从 monster->weapon
构建单独的 Weapon
对象。
- Weapon 可以是字符串对象而不是Weapon 对象。该字符串可以解释为 JSON.
- 或者将字节数组作为武器类型,以放置任何二进制文件流。
- 或者更好地使用 flex-buffer 代替 json 以方便 json 但效率更高。
或者如果你不想改变你的模式,但仍然想要武器 json:
- 使用 flatc 提供的 json 转换实用程序将完整的 fb 数据转换为 json。
- 只需从完整的 json 中选择解析武器节点供您使用。
将二进制转换为 JSON 的函数 GenerateText
目前采用缓冲区指针,而不是根,因此不适用于您的用例。但是,如果您查看该函数的实现,则可以轻松创建这样的函数。
新的 "mini reflection" 功能可能更简单(请参阅评论和功能 minireflect.h
)。这将允许您从任何 FlatBuffers table 生成 JSON,甚至不需要模式解析器。
- 使用
--gen-object-api
编译你的 fbs 文件
- 这将产生
WeaponT
class 和其他*T
classes - 使用
monster->weapon()->UnpackTo(..)
方法填充WeaponT
实例 - 运行
Weapon::Pack(fbb, &weaponT)
序列化回一个新的 fbb 对象 - 运行
GenerateText
在最后一步创建的 fbb 对象上