[C#] add ObjectAPI Serialization Utility (#5785)
* [C#] add ObjectAPI Serialization Utility * set InitialBufferSize to 64k * rename SerializeToFlatBuffers to SerializeToBinary
This commit is contained in:
parent
4749e77b0e
commit
7c37abe92d
|
@ -1990,6 +1990,19 @@ class CSharpGenerator : public BaseGenerator {
|
|||
"Newtonsoft.Json.Formatting.Indented);\n";
|
||||
code += " }\n";
|
||||
}
|
||||
if (parser_.root_struct_def_ == &struct_def) {
|
||||
code += " public static " + class_name +
|
||||
" DeserializeFromBinary(byte[] fbBuffer) {\n";
|
||||
code += " return " + struct_def.name + ".GetRootAs" + struct_def.name +
|
||||
"(new ByteBuffer(fbBuffer)).UnPack();\n";
|
||||
code += " }\n";
|
||||
code += " public byte[] SerializeToBinary() {\n";
|
||||
code += " var fbb = new FlatBufferBuilder(0x10000);\n";
|
||||
code +=
|
||||
" fbb.Finish(" + struct_def.name + ".Pack(fbb, this).Value);\n";
|
||||
code += " return fbb.DataBuffer.ToSizedArray();\n";
|
||||
code += " }\n";
|
||||
}
|
||||
code += "}\n\n";
|
||||
}
|
||||
|
||||
|
|
|
@ -673,6 +673,10 @@ namespace FlatBuffers.Test
|
|||
var jsonText = b.SerializeToJson();
|
||||
var d = MonsterT.DeserializeFromJson(jsonText);
|
||||
AreEqual(a, d);
|
||||
|
||||
var fbBuffer = b.SerializeToBinary();
|
||||
var e = MonsterT.DeserializeFromBinary(fbBuffer);
|
||||
AreEqual(a, e);
|
||||
}
|
||||
|
||||
private void AreEqual(ArrayTable a, ArrayTableT b)
|
||||
|
@ -772,6 +776,10 @@ namespace FlatBuffers.Test
|
|||
var jsonText = b.SerializeToJson();
|
||||
var d = ArrayTableT.DeserializeFromJson(jsonText);
|
||||
AreEqual(a, d);
|
||||
|
||||
var fbBuffer = b.SerializeToBinary();
|
||||
var e = ArrayTableT.DeserializeFromBinary(fbBuffer);
|
||||
AreEqual(a, e);
|
||||
}
|
||||
|
||||
private void AreEqual(Movie a, MovieT b)
|
||||
|
@ -815,6 +823,10 @@ namespace FlatBuffers.Test
|
|||
var jsonText = b.SerializeToJson();
|
||||
var d = MovieT.DeserializeFromJson(jsonText);
|
||||
AreEqual(a, d);
|
||||
|
||||
var fbBuffer = b.SerializeToBinary();
|
||||
var e = MovieT.DeserializeFromBinary(fbBuffer);
|
||||
AreEqual(a, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -61,6 +61,14 @@ public class ArrayTableT
|
|||
public string SerializeToJson() {
|
||||
return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented);
|
||||
}
|
||||
public static ArrayTableT DeserializeFromBinary(byte[] fbBuffer) {
|
||||
return ArrayTable.GetRootAsArrayTable(new ByteBuffer(fbBuffer)).UnPack();
|
||||
}
|
||||
public byte[] SerializeToBinary() {
|
||||
var fbb = new FlatBufferBuilder(0x10000);
|
||||
fbb.Finish(ArrayTable.Pack(fbb, this).Value);
|
||||
return fbb.DataBuffer.ToSizedArray();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -785,6 +785,14 @@ public class MonsterT
|
|||
public string SerializeToJson() {
|
||||
return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented);
|
||||
}
|
||||
public static MonsterT DeserializeFromBinary(byte[] fbBuffer) {
|
||||
return Monster.GetRootAsMonster(new ByteBuffer(fbBuffer)).UnPack();
|
||||
}
|
||||
public byte[] SerializeToBinary() {
|
||||
var fbb = new FlatBufferBuilder(0x10000);
|
||||
fbb.Finish(Monster.Pack(fbb, this).Value);
|
||||
return fbb.DataBuffer.ToSizedArray();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -191,6 +191,14 @@ public class MonsterExtraT
|
|||
public string SerializeToJson() {
|
||||
return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented);
|
||||
}
|
||||
public static MonsterExtraT DeserializeFromBinary(byte[] fbBuffer) {
|
||||
return MonsterExtra.GetRootAsMonsterExtra(new ByteBuffer(fbBuffer)).UnPack();
|
||||
}
|
||||
public byte[] SerializeToBinary() {
|
||||
var fbb = new FlatBufferBuilder(0x10000);
|
||||
fbb.Finish(MonsterExtra.Pack(fbb, this).Value);
|
||||
return fbb.DataBuffer.ToSizedArray();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -191,5 +191,13 @@ public class MovieT
|
|||
public string SerializeToJson() {
|
||||
return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented);
|
||||
}
|
||||
public static MovieT DeserializeFromBinary(byte[] fbBuffer) {
|
||||
return Movie.GetRootAsMovie(new ByteBuffer(fbBuffer)).UnPack();
|
||||
}
|
||||
public byte[] SerializeToBinary() {
|
||||
var fbb = new FlatBufferBuilder(0x10000);
|
||||
fbb.Finish(Movie.Pack(fbb, this).Value);
|
||||
return fbb.DataBuffer.ToSizedArray();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue