Reputation: 459
hi stackoverflow community :)
i want create a flatbuffers object in java which i can serialize to a byte array, and later deserialize back in the java object. i work the first time with flatbuffers and i can't initialised a java object. my way step by step:
Here is my code for step 4:
FlatBufferBuilder fbb = new FlatBufferBuilder(1);
int str = fbb.createString("Dummy");
Monster.startPerson(fbb);
Monster.addName(fbb, str);
int p = Person.endPerson(fbb);
Maybe someone can post a simple example to creating a flatbuffers object, and how to serialize and deserialize to and from bytearray?
Hope for an answer and best regards,
Paul
http://google.github.io/flatbuffers/
Upvotes: 4
Views: 12718
Reputation: 69
Serialize
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());
Hope this help.
Upvotes: 4
Reputation: 1916
Consider you have the following FlatBuffers schema:
table ServiceException {
message:string;
}
After compiling this schema with flatc
to generate Java classes, you can create a ServiceException
instance and convert it into a byte[]
as follows:
FlatBufferBuilder fbb = new FlatBufferBuilder();
int messagePosition = fbb.createString("something bad happened");
int serviceExceptionPosition = ServiceException.createServiceException(fbb, messagePosition);
fbb.finish(serviceExceptionPosition);
byte[] outputBytes = fbb.sizedByteArray();
Next, you convert the generated outputBytes
back into a ServiceException
instance:
ByteBuffer inputByteBuffer = ByteBuffer.wrap(outputBytes);
ServiceException serviceException = ServiceException.getRootAsServiceException(inputByteBuffer);
Upvotes: 4
Reputation: 459
a answer on the google group page: https://groups.google.com/forum/#!topic/flatbuffers/FZBDMd9m0hE
Upvotes: 5