Java 从flatbuffers到bytearray的序列化和反序列化
嗨,社区:) 我想用java创建一个flatbuffers对象,我可以将其序列化为字节数组, 然后在java对象中反序列化。我第一次用平板缓冲器工作 我不能初始化java对象。我一步一步走:Java 从flatbuffers到bytearray的序列化和反序列化,java,serialization,flatbuffers,Java,Serialization,Flatbuffers,嗨,社区:) 我想用java创建一个flatbuffers对象,我可以将其序列化为字节数组, 然后在java对象中反序列化。我第一次用平板缓冲器工作 我不能初始化java对象。我一步一步走: 写一个计划 使用flatbuffers编译器将其编译为java类 从github导入flatbuffers类 尝试构建一个java对象 以下是我的第4步代码: FlatBufferBuilder fbb = new FlatBufferBuilder(1); int str = fbb.createStri
FlatBufferBuilder fbb = new FlatBufferBuilder(1);
int str = fbb.createString("Dummy");
Monster.startPerson(fbb);
Monster.addName(fbb, str);
int p = Person.endPerson(fbb);
也许有人可以发布一个简单的示例来创建flatbuffers对象,以及如何在bytearray之间序列化和反序列化
希望得到答复和最好的问候
保罗
谷歌集团页面上的答案:
谷歌集团页面上的答案: 序列化
FlatBufferBuilder fbb = new FlatBufferBuilder();
int str = fbb.createString("MyMonster");
Monster.startMonster(fbb);
Monster.addName(fbb, str);
int mon = Monster.endMonster(fbb);
fbb.finish(mon);
byte[] data = fbb.sizedByteArray();
应得的
ByteBuffer buff = ByteBuffer.wrap(data);
Monstermonster monster = Monster.getRootAsMonster(buff);
System.out.println(monster.name());
希望对您有所帮助。
FlatBufferBuilder fbb = new FlatBufferBuilder();
int str = fbb.createString("MyMonster");
Monster.startMonster(fbb);
Monster.addName(fbb, str);
int mon = Monster.endMonster(fbb);
fbb.finish(mon);
byte[] data = fbb.sizedByteArray();
应得的
ByteBuffer buff = ByteBuffer.wrap(data);
Monstermonster monster = Monster.getRootAsMonster(buff);
System.out.println(monster.name());
希望有此帮助。认为您有以下FlatBuffers架构:
table ServiceException {
message:string;
}
使用flatc
编译此模式以生成Java类后,您可以创建ServiceException
实例并将其转换为字节[]
,如下所示:
FlatBufferBuilder fbb = new FlatBufferBuilder();
int messagePosition = fbb.createString("something bad happened");
int serviceExceptionPosition = ServiceException.createServiceException(fbb, messagePosition);
fbb.finish(serviceExceptionPosition);
byte[] outputBytes = fbb.sizedByteArray();
接下来,将生成的outputBytes
转换回ServiceException
实例:
ByteBuffer inputByteBuffer = ByteBuffer.wrap(outputBytes);
ServiceException serviceException = ServiceException.getRootAsServiceException(inputByteBuffer);
假设您具有以下FlatBuffers架构:
table ServiceException {
message:string;
}
使用flatc
编译此模式以生成Java类后,您可以创建ServiceException
实例并将其转换为字节[]
,如下所示:
FlatBufferBuilder fbb = new FlatBufferBuilder();
int messagePosition = fbb.createString("something bad happened");
int serviceExceptionPosition = ServiceException.createServiceException(fbb, messagePosition);
fbb.finish(serviceExceptionPosition);
byte[] outputBytes = fbb.sizedByteArray();
接下来,将生成的outputBytes
转换回ServiceException
实例:
ByteBuffer inputByteBuffer = ByteBuffer.wrap(outputBytes);
ServiceException serviceException = ServiceException.getRootAsServiceException(inputByteBuffer);
如何将其从字节数组反序列化到FlatBuffer。本页的答案不包括反序列化情况。如何将其从字节数组反序列化到FlatBuffer。此页上的答案不包括反序列化情况。
fbb.sizedByteArray()
由于缺少fbb.finish()
调用而无法工作。看看我的答案。啊!我忘了。谢谢。fbb.sizedByteArray()
由于缺少fbb.finish()
调用而无法工作。看看我的答案。啊!我忘了。谢谢你..sizedByteArray()而不是.byteBuffer()救了我一天:)谢谢!。sizedByteArray()而不是.byteBuffer()救了我一天:)谢谢!