stackoverflow社区:)
我想在java中创建一个flatbuffers对象,我可以将其序列化为一个字节数组, 然后在java对象中反序列化。我第一次使用flatbuffers工作 我无法初始化一个java对象。我的方法一步一步:
以下是我的第4步代码:
FlatBufferBuilder fbb = new FlatBufferBuilder(1);
int str = fbb.createString("Dummy");
Monster.startPerson(fbb);
Monster.addName(fbb, str);
int p = Person.endPerson(fbb);
也许有人可以发布一个简单的例子来创建一个flatbuffers对象,以及如何序列化和反序列化到bytearray中?
希望得到答复和最好的问候,
保
答案 0 :(得分:3)
google群组页面上的答案: https://groups.google.com/forum/#!topic/flatbuffers/FZBDMd9m0hE
答案 1 :(得分:1)
考虑您有以下FlatBuffers架构:
table ServiceException {
message:string;
}
在使用flatc
编译此模式以生成Java类之后,您可以创建一个ServiceException
实例并将其转换为byte[]
,如下所示:
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);
答案 2 :(得分:0)
序列化
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();
Deserialzie
ByteBuffer buff = ByteBuffer.wrap(data);
Monstermonster monster = Monster.getRootAsMonster(buff);
System.out.println(monster.name());
希望得到这个帮助。