我有嵌套的Java POJO 3级,看起来像这样的模式文件:Flatbuffers:你如何构建嵌套表?
struct FPathSegment {
originIata:ushort;
destinationIata:ushort;
}
table FPathConnection {
segments:[FPathSegment];
}
table FPath {
connections:[FPathConnection];
}
当我尝试序列化的Java POJO的Flatbuffer相当于我几乎得到“嵌套serialzation不允许”每次尝试使用普通的FlatBufferBuilder来构建整个对象图时都会出错。
在文档中没有线索可以说明我是否拥有整个图形的单个构建器?每个表/结构单独一个?如果分开,你如何将子对象导入父对象?
有所有这些方法,如创建/开始/添加各种载体,但没有解释什么建设者去那里。痛苦复杂。
这里是我的Java代码,我试图将我的Java POJO序列化为Flatbuffers相当于:
private FPath convert(Path path) {
FlatBufferBuilder bld = new FlatBufferBuilder(1024);
// build the Flatbuffer object
FPath.startFPath(bld);
FPath.startConnectionsVector(bld, path.getConnections().size());
for(Path.PathConnection connection : path.getConnections()) {
FPathConnection.startFPathConnection(bld);
for(Path.PathSegment segment : connection.getSegments()) {
FPathSegment.createFPathSegment(bld,
stringCache.getPointer(segment.getOriginIata()),
stringCache.getPointer(segment.getDestinationIata()));
}
FPathConnection.endFPathConnection(bld);
}
FPath.endFPath(bld);
return FPath.getRootAsFPath(bld.dataBuffer());
}
每start()方法抛出一个“FlatBuffers:对象序列化不能嵌套”异常,不能弄清楚如何做到这一点。