私はスキーマファイルに次のようになりますJavaのPOJOネストされた3レベルがあります:私はFlatbuffer相当にJavaのPOJOをシリアル化しようとするとFlatbuffers:どのようにしてネストしたテーブルを作成しますか?
struct FPathSegment {
originIata:ushort;
destinationIata:ushort;
}
table FPathConnection {
segments:[FPathSegment];
}
table FPath {
connections:[FPathConnection];
}
私はかなりの「ネストされたserialzationは許可されていません」を取得私が一般的なFlatBufferBuilderを使用してこのオブジェクトグラフ全体を構築しようとするたびにエラーが発生します。
グラフ全体に対して1つのビルダーがある場合は、ドキュメントに記載する手掛かりはありません。すべてのテーブル/構造体のために別々のもの?別の場合、子オブジェクトを親にどのようにインポートしますか?
さまざまなベクターの作成/開始/追加などの方法はすべてありますが、そこに入るビルダーの説明はありません。痛いほど複雑です。 、できない例外:
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」がスローされます。ここでは
は、私がFlatbuffers相当に私のJavaのPOJOをシリアル化しようとすると、私のJavaコードでありますこれを行う方法は何かを理解してください。