diff --git a/Build/build.ps1 b/Build/build.ps1 index ca539e97..36e6ceec 100644 --- a/Build/build.ps1 +++ b/Build/build.ps1 @@ -1,5 +1,5 @@ properties { - $zipFileName = "Json35r7.zip" + $zipFileName = "Json35r8.zip" $signAssemblies = $false $signKeyPath = "D:\Development\Releases\newtonsoft.snk" $buildDocumentation = $false diff --git a/Src/Newtonsoft.Json.Tests/Serialization/TypeNameHandlingTests.cs b/Src/Newtonsoft.Json.Tests/Serialization/TypeNameHandlingTests.cs index 06b0315e..51fd2606 100644 --- a/Src/Newtonsoft.Json.Tests/Serialization/TypeNameHandlingTests.cs +++ b/Src/Newtonsoft.Json.Tests/Serialization/TypeNameHandlingTests.cs @@ -538,5 +538,46 @@ namespace Newtonsoft.Json.Tests.Serialization Assert.AreEqual(1, list.Count); Assert.IsInstanceOfType(typeof(ContentSubClass), list[0]); } + + [Test] + public void WriteObjectTypeNameForPropertyDemo() + { + Message message = new Message(); + message.Address = "http://www.google.com"; + message.Body = new SearchDetails + { + Query = "Json.NET", + Language = "en-us" + }; + + string json = JsonConvert.SerializeObject(message, Formatting.Indented); + // { + // "Address": "http://www.google.com", + // "Body": { + // "$type": "Newtonsoft.Json.Tests.Serialization.SearchDetails, Newtonsoft.Json.Tests", + // "Query": "Json.NET", + // "Language": "en-us" + // } + // } + + Message deserialized = JsonConvert.DeserializeObject(json); + + SearchDetails searchDetails = (SearchDetails) deserialized.Body; + // Json.NET + } + } + + public class Message + { + public string Address { get; set; } + + [JsonProperty(TypeNameHandling = TypeNameHandling.All)] + public object Body { get; set; } + } + + public class SearchDetails + { + public string Query { get; set; } + public string Language { get; set; } } } \ No newline at end of file