You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建支持多根类型的FlatBuffer JSON文件

多根类型FlatBuffer JSON文件创建方案

报错原因

FlatBuffer 解析JSON时默认要求明确匹配根表结构,你当前的Schema既没有声明全局root_type,解析时也没有手动指定根类型,就会抛出no root type set to parse json with错误。

两种实现方案

方案1:解析时临时指定根类型(无需修改Schema)

调用flatc工具时添加--root-type参数指定对应根表名即可,适合单类型JSON解析场景:

  • 解析Login类型JSON:
    flatc --json --root-type Login your_schema.fbs -- login_data.json
    
  • 解析Attack类型JSON:
    flatc --json --root-type Attack your_schema.fbs -- attack_data.json
    

方案2:Schema内定义联合根类型(支持单JSON适配多类型)

如果需要在统一JSON结构下兼容所有根类型,可以修改Schema添加联合类型作为全局根:

  1. 修改后的Schema示例:
table Login {
    name:string;
    password:string;
}

table Attack {
    damage:short;
}

// 定义包含所有可能根类型的联合
union RootMessage {
    Login,
    Attack
}

// 封装联合类型的根表
table MessageRoot {
    msg: RootMessage;
}

// 声明全局根类型
root_type MessageRoot;
  1. 对应JSON格式:
    • Login类型JSON:
    {
        "msg_type": "Login",
        "msg": {
            "name": "a",
            "password": "a"
        }
    }
    
    • Attack类型JSON:
    {
        "msg_type": "Attack",
        "msg": {
            "damage": 300
        }
    }
    

该方案不需要每次解析时指定根类型,工具会自动根据msg_type字段匹配对应表结构。

额外注意

你给出的JSON示例中password字段末尾多了冗余逗号,标准JSON不支持尾随逗号,建议删除避免额外解析报错。


内容的提问来源于stack exchange,提问作者coordinate

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 17:06:04