42 lines
2.6 KiB
XML
42 lines
2.6 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<topic id="ConditionalProperties" revisionNumber="1">
|
|
<developerConceptualDocument xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
<introduction>
|
|
<para>Json.NET has the ability to conditionally serialize properties by placing a ShouldSerialize method on a class.
|
|
This functionality is similar to the <externalLink>
|
|
<linkText>XmlSerializer ShouldSerialize feature</linkText>
|
|
<linkUri>http://msdn.microsoft.com/en-us/library/53b8022e.aspx</linkUri>
|
|
<linkTarget>_blank</linkTarget>
|
|
</externalLink>.</para>
|
|
<autoOutline lead="none" excludeRelatedTopics="true" />
|
|
</introduction>
|
|
<section address="ShouldSerialize">
|
|
<title>ShouldSerialize</title>
|
|
<content>
|
|
<para>To conditionally serialize a property, add a method that returns boolean with the same name as the property and then prefix the method name
|
|
with ShouldSerialize. The result of the method determines whether the property is serialized. If the method returns true then the
|
|
property will be serialized, if it returns false then the property will be skipped.</para>
|
|
|
|
<code lang="cs" source="..\Src\Newtonsoft.Json.Tests\Documentation\ConditionalPropertiesTests.cs" region="EmployeeShouldSerializeExample" title="Employee class with a ShouldSerialize method" />
|
|
<code lang="cs" source="..\Src\Newtonsoft.Json.Tests\Documentation\ConditionalPropertiesTests.cs" region="ShouldSerializeClassTest" title="ShouldSerialize output" />
|
|
|
|
</content>
|
|
</section>
|
|
<section address="IContractResolver">
|
|
<title>IContractResolver</title>
|
|
<content>
|
|
<para>ShouldSerialize can also be set using an <codeEntityReference>T:Newtonsoft.Json.Serialization.IContractResolver</codeEntityReference>.
|
|
Conditionally serializing a property using an IContractResolver is useful if you don't want to place a ShouldSerialize method on a class
|
|
or you didn't declare the class and are unable to.</para>
|
|
|
|
<code lang="cs" source="..\Src\Newtonsoft.Json.Tests\Documentation\ConditionalPropertiesTests.cs" region="ShouldSerializeContractResolver" title="Conditional properties with IContractResolver" />
|
|
|
|
</content>
|
|
</section>
|
|
<relatedTopics>
|
|
<codeEntityReference>T:Newtonsoft.Json.JsonSerializer</codeEntityReference>
|
|
<codeEntityReference>T:Newtonsoft.Json.Serialization.IContractResolver</codeEntityReference>
|
|
<codeEntityReference>P:Newtonsoft.Json.Serialization.JsonProperty.ShouldSerialize</codeEntityReference>
|
|
</relatedTopics>
|
|
</developerConceptualDocument>
|
|
</topic> |