[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";
|
"Newtonsoft.Json.Formatting.Indented);\n";
|
||||||
code += " }\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";
|
code += "}\n\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -673,6 +673,10 @@ namespace FlatBuffers.Test
|
||||||
var jsonText = b.SerializeToJson();
|
var jsonText = b.SerializeToJson();
|
||||||
var d = MonsterT.DeserializeFromJson(jsonText);
|
var d = MonsterT.DeserializeFromJson(jsonText);
|
||||||
AreEqual(a, d);
|
AreEqual(a, d);
|
||||||
|
|
||||||
|
var fbBuffer = b.SerializeToBinary();
|
||||||
|
var e = MonsterT.DeserializeFromBinary(fbBuffer);
|
||||||
|
AreEqual(a, e);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void AreEqual(ArrayTable a, ArrayTableT b)
|
private void AreEqual(ArrayTable a, ArrayTableT b)
|
||||||
|
@ -772,6 +776,10 @@ namespace FlatBuffers.Test
|
||||||
var jsonText = b.SerializeToJson();
|
var jsonText = b.SerializeToJson();
|
||||||
var d = ArrayTableT.DeserializeFromJson(jsonText);
|
var d = ArrayTableT.DeserializeFromJson(jsonText);
|
||||||
AreEqual(a, d);
|
AreEqual(a, d);
|
||||||
|
|
||||||
|
var fbBuffer = b.SerializeToBinary();
|
||||||
|
var e = ArrayTableT.DeserializeFromBinary(fbBuffer);
|
||||||
|
AreEqual(a, e);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void AreEqual(Movie a, MovieT b)
|
private void AreEqual(Movie a, MovieT b)
|
||||||
|
@ -815,6 +823,10 @@ namespace FlatBuffers.Test
|
||||||
var jsonText = b.SerializeToJson();
|
var jsonText = b.SerializeToJson();
|
||||||
var d = MovieT.DeserializeFromJson(jsonText);
|
var d = MovieT.DeserializeFromJson(jsonText);
|
||||||
AreEqual(a, d);
|
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() {
|
public string SerializeToJson() {
|
||||||
return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented);
|
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() {
|
public string SerializeToJson() {
|
||||||
return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented);
|
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() {
|
public string SerializeToJson() {
|
||||||
return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented);
|
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() {
|
public string SerializeToJson() {
|
||||||
return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented);
|
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