我有如下的Json数据
{
"!type": "alarm",
"$": {
"12279": {
"!type": "alarm",
"title": "Default",
"$": {
"5955": {
"!type": "alarm",
"name": "Wake",
"day": "SUN",
"startTime": "06:00"
},
"29323": {
"!type": "alarm",
"name": "Away",
"day": "SUN",
"startTime": "08:00"
},
"2238": {
"!type": "alarm",
"name": "Home",
"day": "SUN",
"startTime": "18:00"
}
}
}
}
}
我的fbs看起来像这样
namespace space.alarm;
table Atom{
!type:string;
name:string;
startDay:string;
startTime:string; }
table AtomShell{
key:string (required, key);
value: Atom; }
table Alarm{
!type:string;
title:string;
$:[AtomShell]; }
table AlarmShell{
key:string (required, key);
value:Alarm; }
table Weeklyalarm{
!type:string;
$:[AlarmShell]; } root_type Weeklyalarm;

我试图实现谷歌缓冲区,但我收到的错误如
现在我的问题,
提前致谢。
答案 0 :(得分:0)
您不能在字段名称中包含!
和$
等字符。只需使用type
代替!type
等
不确定动态ID是什么意思。必须在架构中声明所有字段名称(键),因此它们不能是动态的。但是,如果你使你的JSON看起来像这样,你仍然可以获得类似的结果:
{
"type": "alarm",
"data": [
{
id: "12279",
"type": "alarm",
"title": "Default",
"data": [
{
"id": "5955",
"type": "alarm",
"name": "Wake",
"day": "SUN",
"startTime": "06:00"
},
{
"id": "29323",
"type": "alarm",
"name": "Away",
"day": "SUN",
"startTime": "08:00"
},
{
"id": "2238",
"type": "alarm",
"name": "Home",
"day": "SUN",
"startTime": "18:00"
}
]
}
]
}
然后制作相应的架构。
请注意,我将“动态”列表转换为向量,并将id移动到对象本身。
其他提示:非动态的字符串值(如"alarm"
)如果将它们变为枚举,则占用的空间会减少。