mirror of
https://github.com/google/flatbuffers.git
synced 2026-06-30 04:50:04 +00:00
support json serialization
This commit is contained in:
@@ -17,7 +17,7 @@
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<DefineConstants>TRACE;DEBUG;ENABLE_JSON_SERIALIZATION</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
@@ -25,7 +25,7 @@
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<DefineConstants>TRACE;ENABLE_JSON_SERIALIZATION</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
@@ -37,6 +37,9 @@
|
||||
<DefineConstants>$(DefineConstants);UNSAFE_BYTEBUFFER</DefineConstants>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||
<HintPath>packages\Newtonsoft.Json.12.0.3\lib\net35\Newtonsoft.Json.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
@@ -169,6 +172,11 @@
|
||||
<Link>Resources\monsterdata_test.mon</Link>
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="..\monsterdata_test.json">
|
||||
<Link>Resources\monsterdata_test.json</Link>
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
|
||||
@@ -287,6 +287,62 @@ namespace FlatBuffers.Test
|
||||
TestObjectAPI(Monster.GetRootAsMonster(bb));
|
||||
}
|
||||
|
||||
#if ENABLE_JSON_SERIALIZATION
|
||||
[FlatBuffersTestMethod]
|
||||
public void CanReadJsonFile()
|
||||
{
|
||||
var jsonText = File.ReadAllText(@"Resources/monsterdata_test.json");
|
||||
var mon = MonsterT.DeserializeFromJson(jsonText);
|
||||
|
||||
Assert.AreEqual(1.0f, mon.Pos.X);
|
||||
Assert.AreEqual(2.0f, mon.Pos.Y);
|
||||
Assert.AreEqual(3.0f, mon.Pos.Z);
|
||||
Assert.AreEqual(3.0, mon.Pos.Test1);
|
||||
Assert.AreEqual(Color.Green, mon.Pos.Test2);
|
||||
Assert.AreEqual(5, mon.Pos.Test3.A);
|
||||
Assert.AreEqual(6, mon.Pos.Test3.B);
|
||||
Assert.AreEqual(80, mon.Hp);
|
||||
Assert.AreEqual("MyMonster", mon.Name);
|
||||
Assert.AreEqual(5, mon.Inventory.Count);
|
||||
Assert.AreEqual(0, mon.Inventory[0]);
|
||||
Assert.AreEqual(1, mon.Inventory[1]);
|
||||
Assert.AreEqual(2, mon.Inventory[2]);
|
||||
Assert.AreEqual(3, mon.Inventory[3]);
|
||||
Assert.AreEqual(4, mon.Inventory[4]);
|
||||
Assert.AreEqual(5, mon.VectorOfLongs.Count);
|
||||
Assert.AreEqual(1L, mon.VectorOfLongs[0]);
|
||||
Assert.AreEqual(100L, mon.VectorOfLongs[1]);
|
||||
Assert.AreEqual(10000L, mon.VectorOfLongs[2]);
|
||||
Assert.AreEqual(1000000L, mon.VectorOfLongs[3]);
|
||||
Assert.AreEqual(100000000L, mon.VectorOfLongs[4]);
|
||||
Assert.AreEqual(3, mon.VectorOfDoubles.Count);
|
||||
Assert.AreEqual(-1.7976931348623157e+308, mon.VectorOfDoubles[0]);
|
||||
Assert.AreEqual(0.0, mon.VectorOfDoubles[1]);
|
||||
Assert.AreEqual(1.7976931348623157e+308, mon.VectorOfDoubles[2]);
|
||||
Assert.AreEqual(Any.Monster, mon.Test.Type);
|
||||
Assert.AreEqual("Fred", mon.Test.AsMonster().Name);
|
||||
Assert.IsTrue(null == mon.Test.AsMonster().Pos);
|
||||
Assert.AreEqual(2, mon.Test4.Count);
|
||||
Assert.AreEqual(10, mon.Test4[0].A);
|
||||
Assert.AreEqual(20, mon.Test4[0].B);
|
||||
Assert.AreEqual(30, mon.Test4[1].A);
|
||||
Assert.AreEqual(40, mon.Test4[1].B);
|
||||
Assert.AreEqual(10, mon.Test5[0].A);
|
||||
Assert.AreEqual(20, mon.Test5[0].B);
|
||||
Assert.AreEqual(30, mon.Test5[1].A);
|
||||
Assert.AreEqual(40, mon.Test5[1].B);
|
||||
Assert.AreEqual(2, mon.Testarrayofstring.Count);
|
||||
Assert.AreEqual("test1", mon.Testarrayofstring[0]);
|
||||
Assert.AreEqual("test2", mon.Testarrayofstring[1]);
|
||||
Assert.AreEqual("Fred", mon.Enemy.Name);
|
||||
Assert.AreEqual(3, mon.Testarrayofbools.Count);
|
||||
Assert.AreEqual(true, mon.Testarrayofbools[0]);
|
||||
Assert.AreEqual(false, mon.Testarrayofbools[1]);
|
||||
Assert.AreEqual(true, mon.Testarrayofbools[2]);
|
||||
Assert.AreEqual(true, mon.Testbool);
|
||||
}
|
||||
#endif
|
||||
|
||||
[FlatBuffersTestMethod]
|
||||
public void TestEnums()
|
||||
{
|
||||
@@ -659,6 +715,12 @@ namespace FlatBuffers.Test
|
||||
fbb.Finish(Monster.Pack(fbb, b).Value);
|
||||
var c = Monster.GetRootAsMonster(fbb.DataBuffer);
|
||||
AreEqual(a, c);
|
||||
|
||||
#if ENABLE_JSON_SERIALIZATION
|
||||
var jsonText = b.SerializeToJson();
|
||||
var d = MonsterT.DeserializeFromJson(jsonText);
|
||||
AreEqual(a, d);
|
||||
#endif
|
||||
}
|
||||
|
||||
private void AreEqual(ArrayTable a, ArrayTableT b)
|
||||
@@ -754,6 +816,12 @@ namespace FlatBuffers.Test
|
||||
fbb.Finish(ArrayTable.Pack(fbb, b).Value);
|
||||
var c = ArrayTable.GetRootAsArrayTable(fbb.DataBuffer);
|
||||
AreEqual(a, c);
|
||||
|
||||
#if ENABLE_JSON_SERIALIZATION
|
||||
var jsonText = b.SerializeToJson();
|
||||
var d = ArrayTableT.DeserializeFromJson(jsonText);
|
||||
AreEqual(a, d);
|
||||
#endif
|
||||
}
|
||||
|
||||
private void AreEqual(Movie a, MovieT b)
|
||||
@@ -793,6 +861,12 @@ namespace FlatBuffers.Test
|
||||
fbb.Finish(Movie.Pack(fbb, b).Value);
|
||||
var c = Movie.GetRootAsMovie(fbb.DataBuffer);
|
||||
AreEqual(a, c);
|
||||
|
||||
#if ENABLE_JSON_SERIALIZATION
|
||||
var jsonText = b.SerializeToJson();
|
||||
var d = MovieT.DeserializeFromJson(jsonText);
|
||||
AreEqual(a, d);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
4
tests/FlatBuffers.Test/packages.config
Normal file
4
tests/FlatBuffers.Test/packages.config
Normal file
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="Newtonsoft.Json" version="12.0.3" targetFramework="net35" />
|
||||
</packages>
|
||||
Reference in New Issue
Block a user