-Documentation
-Performance
This commit is contained in:
@@ -0,0 +1,454 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<topic id="JsonNetVsDotNetSerializers" revisionNumber="1">
|
||||
<developerConceptualDocument xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<introduction>
|
||||
<para>Json.NET offers many features not found in the JavaScriptSerializer and DataContractSerializer that come with .NET.</para>
|
||||
</introduction>
|
||||
<section>
|
||||
<title>Feature Comparison</title>
|
||||
<content>
|
||||
<table>
|
||||
<tableHeader>
|
||||
<row>
|
||||
<entry><para></para></entry>
|
||||
<entry><para>Json.NET</para></entry>
|
||||
<entry><para>DataContractJsonSerializer</para></entry>
|
||||
<entry><para>JavaScriptSerializer</para></entry>
|
||||
</row>
|
||||
</tableHeader>
|
||||
<row>
|
||||
<entry><para>Supports JSON</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>Supports BSON</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>Supports JSON Schema</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>Supports .NET 2.0</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>Supports .NET 3.5</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>Supports .NET 4.0</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>Supports Silverlight</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>Supports Windows Phone</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>Supports WinRT</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>Open Source</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>MIT License</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>LINQ to JSON</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>Thread Safe</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>XPath-like JSON query syntax</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>Indented JSON support</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>
|
||||
<externalLink>
|
||||
<linkText>Efficient dictionary serialization</linkText>
|
||||
<linkUri>http://stackoverflow.com/questions/1207731/how-can-i-deserialize-json-to-a-simple-dictionarystring-string-in-asp-net</linkUri>
|
||||
<linkTarget>_blank</linkTarget>
|
||||
</externalLink>
|
||||
</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>
|
||||
<externalLink>
|
||||
<linkText>Nonsensical dictionary serialization</linkText>
|
||||
<linkUri>http://stackoverflow.com/questions/4559991/any-way-to-make-datacontractjsonserializer-serialize-dictionaries-properly</linkUri>
|
||||
<linkTarget>_blank</linkTarget>
|
||||
</externalLink>
|
||||
</para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>Deserializes IList, IEnumerable, ICollection, IDictionary properties</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>Serializes circular references</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>Supports serializing objects by reference</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>Deserializes polymorphic properties and collections</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>Serializes and deserializes multidimensional arrays</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>Supports including type names with JSON</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>Globally customize serialization process</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>Supports excluding null values when serializing</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>Supports SerializationBinder</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>Conditional property serialization</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>Includes line number information in errors</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>Converts XML to JSON and JSON to XML</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>JSON Schema validation</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>JSON Schema generation from .NET types</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>Camel case JSON property names</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>Non-default constructors support</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>Serialization error handling</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>Supports populating an existing object</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>Efficiently serializes byte arrays as base64 text</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>Handles NaN, Infinity, -Infinity and undefined</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>Handles JavaScript constructors</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>Serializes .NET 4.0 dynamic objects</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>Serializes ISerializable objects</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>Supports serializing enums to their text name</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>JSON recursion limit support</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>Attribute property name customization</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>Attribute property order customization</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>Attribute property required customization</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>Supports ISO8601 dates</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>Supports JavaScript constructor dates</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>Supports Microsoft AJAX dates</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>Unquoted property names support</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>Raw JSON support</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>Supports reading and writing comments</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>Serializes anonymous types</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>Deserializes anonymous types</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>Opt-in mode serialization</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>Opt-out mode serialization</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>Field (Serializable) mode serialization</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>Efficiently stream reading and writing JSON</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>Single or double quote JSON content</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>Supports overriding a type's serialization</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>Supports OnDeserialized, OnSerializing, OnSerialized and OnDeserializing attributes</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>Supports serializing private properties</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>DataMember attribute support</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>MetdataType attribute support</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>DefaultValue attribute support</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>Serializes DataSets and DataTables</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>Serailizes Entity Framework</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>Serializes nHibernate</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para>Case-insensitive property deserialization</para></entry>
|
||||
<entry><para><markup><img src="../tick.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
<entry><para><markup><img src="../cross.png" /></markup></para></entry>
|
||||
</row>
|
||||
</table>
|
||||
</content>
|
||||
</section>
|
||||
<section>
|
||||
<title>Benchmarks</title>
|
||||
<content>
|
||||
|
||||
<mediaLink>
|
||||
<image class="image" xlink:href="performance" mimeType="image/png" width="643" height="345" />
|
||||
<summary>Json.NET Performance</summary>
|
||||
</mediaLink>
|
||||
|
||||
</content>
|
||||
</section>
|
||||
</developerConceptualDocument>
|
||||
</topic>
|
||||
@@ -0,0 +1,101 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<topic id="JsonNetVsWindowsDataJson" revisionNumber="1">
|
||||
<developerConceptualDocument xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<introduction>
|
||||
<para>Windows 8 introduces a new way to work with JSON via the <externalLink>
|
||||
<linkText>Windows.Data.Json</linkText>
|
||||
<linkUri>http://msdn.microsoft.com/en-us/library/windows/apps/xaml/br240639.aspx</linkUri>
|
||||
<linkTarget>_blank</linkTarget>
|
||||
</externalLink> namespace. Similar to LINQ to JSON in Json.NET
|
||||
it defines classes that can be used to parse values, strings, objects, and arrays from
|
||||
JSON text or serialize value types into JSON text.</para>
|
||||
<para>Below is a comparison of Json.NET's LINQ to JSON to Window 8's Windows.Data.Json.</para>
|
||||
</introduction>
|
||||
<section>
|
||||
<title>Exclusive Json.NET Features</title>
|
||||
<content>
|
||||
<list class="bullet">
|
||||
<listItem>
|
||||
<para>
|
||||
Runs on .NET 2, .NET 3, .NET 4, Silverlight and Windows Phone 7
|
||||
</para>
|
||||
</listItem>
|
||||
<listItem>
|
||||
<para>
|
||||
Supports dynamic programming
|
||||
</para>
|
||||
</listItem>
|
||||
<listItem>
|
||||
<para>
|
||||
Write indented JSON
|
||||
</para>
|
||||
</listItem>
|
||||
<listItem>
|
||||
<para>
|
||||
Customize reading and writing JSON with JsonConverters
|
||||
</para>
|
||||
</listItem>
|
||||
<listItem>
|
||||
<para>
|
||||
Read and write ISO8601 dates
|
||||
</para>
|
||||
</listItem>
|
||||
<listItem>
|
||||
<para>
|
||||
Better LINQ support
|
||||
</para>
|
||||
</listItem>
|
||||
</list>
|
||||
</content>
|
||||
</section>
|
||||
<section>
|
||||
<title>Creating JSON</title>
|
||||
<content>
|
||||
<para>The big difference between the two libraries when creating JSON is Windows.Data.Json requires
|
||||
string/integer/double values to be explicitly converted to JsonValue objects.</para>
|
||||
<para>Note that there is a weird limitation to creating JSON with Windows.Data.Json: it doesn't
|
||||
allow you to set properties to null or put null values in an array.</para>
|
||||
|
||||
<code lang="cs" source="..\Src\Newtonsoft.Json.Tests\Documentation\JsonNetVsWindowsDataJsonTests.cs" region="CreatingJSON" title="Creating JSON with Json.NET and Windows.Data.Json" />
|
||||
|
||||
</content>
|
||||
</section>
|
||||
<section>
|
||||
<title>Querying JSON</title>
|
||||
<content>
|
||||
<para>Windows.Data.Json requires a value to be cast to its exact type with the GetObject/GetArray methods
|
||||
before it can be used, making Windows.Data.Json's code verbose compared to LINQ to JSON.</para>
|
||||
|
||||
<code lang="cs" source="..\Src\Newtonsoft.Json.Tests\Documentation\JsonNetVsWindowsDataJsonTests.cs" region="QueryingJSON" title="Querying JSON with Json.NET and Windows.Data.Json" />
|
||||
|
||||
</content>
|
||||
</section>
|
||||
<section>
|
||||
<title>Performance</title>
|
||||
<content>
|
||||
<para>Json.NET is slightly slower at writing JSON than Windows.Data.Json but considerably faster at parsing JSON.</para>
|
||||
|
||||
<mediaLink>
|
||||
<image class="image" xlink:href="jsonnetwindowsdatajson" mimeType="image/png" width="592" height="356" />
|
||||
<summary>Json.NET and Windows.Data.Json Performance</summary>
|
||||
</mediaLink>
|
||||
|
||||
</content>
|
||||
</section>
|
||||
<section>
|
||||
<title>Converting Between LINQ to JSON and Windows.Data.Json</title>
|
||||
<content>
|
||||
<para>Json.NET supports converting between the types of the two libraries.
|
||||
This feature is useful if you are working with another API but you want to use Json.NET inside your own code.</para>
|
||||
<para>Use <codeEntityReference>Overload:Newtonsoft.Json.Linq.JToken.FromObject</codeEntityReference> to convert a Windows.Data.Json
|
||||
value to LINQ to JSON and use <codeEntityReference>Overload:Newtonsoft.Json.Linq.JToken.ToObject</codeEntityReference> to convert LINQ to JSON to Windows.Data.Json.</para>
|
||||
|
||||
<code lang="cs" source="..\Src\Newtonsoft.Json.Tests\Documentation\JsonNetVsWindowsDataJsonTests.cs" region="Converting" title="Converting between Json.NET and Windows.Data.Json" />
|
||||
|
||||
</content>
|
||||
</section>
|
||||
<relatedTopics>
|
||||
<codeEntityReference>N:Newtonsoft.Json.Linq</codeEntityReference>
|
||||
</relatedTopics>
|
||||
</developerConceptualDocument>
|
||||
</topic>
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 655 B |
+30
-28
@@ -1,29 +1,31 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Topics>
|
||||
<Topic id="Introduction" visible="True" isDefault="true" />
|
||||
<Topic id="SerializingJSON" visible="True" isExpanded="true" title="Serializing and Deserializing JSON">
|
||||
<Topic id="SerializationSettings" visible="True" title="Serialization Settings" />
|
||||
<Topic id="SerializationGuide" visible="True" title="Serialization Guide" />
|
||||
<Topic id="SerializationAttributes" visible="True" title="Serialization Attributes" />
|
||||
<Topic id="SerializationCallbacks" visible="True" title="Serialization Callbacks" />
|
||||
<Topic id="SerializationErrorHandling" visible="True" title="Serialization Error Handling" />
|
||||
<Topic id="PreserveObjectReferences" visible="True" title="Preserving Object References" />
|
||||
<Topic id="CustomCreationConverter" visible="True" />
|
||||
<Topic id="SerializingCollections" visible="True" title="Serializing Collections" />
|
||||
<Topic id="DatesInJSON" visible="True" title="Serializing Dates in JSON" />
|
||||
<Topic id="ReducingSerializedJSONSize" visible="True" title="Reducing Serialized JSON Size" />
|
||||
<Topic id="SerializingJSONFragments" visible="True" title="Serializing Partial JSON Fragments" />
|
||||
<Topic id="ConditionalProperties" visible="True" title="Conditional Properties" />
|
||||
<Topic id="ContractResolver" visible="True" isSelected="true" title="Serialization using ContractResolver" />
|
||||
</Topic>
|
||||
<Topic id="LINQtoJSON" visible="True" title="LINQ to JSON">
|
||||
<Topic id="ParsingLINQtoJSON" visible="True" title="Parsing JSON" />
|
||||
<Topic id="CreatingLINQtoJSON" visible="True" title="Creating JSON" />
|
||||
<Topic id="QueryingLINQtoJSON" visible="True" title="Querying JSON with LINQ" />
|
||||
<Topic id="SelectToken" visible="True" title="Querying JSON with SelectToken" />
|
||||
</Topic>
|
||||
<Topic id="Performance" visible="True" title="Performance" />
|
||||
<Topic id="JsonSchema" visible="True" title="Validating JSON" />
|
||||
<Topic id="ReadingWritingJSON" visible="True" title="Basic Reading and Writing JSON" />
|
||||
<Topic id="ConvertingJSONandXML" visible="True" title="Converting between JSON and XML" />
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Topics>
|
||||
<Topic id="Introduction" visible="True" isDefault="true" />
|
||||
<Topic id="SerializingJSON" visible="True" title="Serializing and Deserializing JSON">
|
||||
<Topic id="SerializationSettings" visible="True" title="Serialization Settings" />
|
||||
<Topic id="SerializationGuide" visible="True" title="Serialization Guide" />
|
||||
<Topic id="SerializationAttributes" visible="True" title="Serialization Attributes" />
|
||||
<Topic id="SerializationCallbacks" visible="True" title="Serialization Callbacks" />
|
||||
<Topic id="SerializationErrorHandling" visible="True" title="Serialization Error Handling" />
|
||||
<Topic id="PreserveObjectReferences" visible="True" title="Preserving Object References" />
|
||||
<Topic id="CustomCreationConverter" visible="True" />
|
||||
<Topic id="SerializingCollections" visible="True" title="Serializing Collections" />
|
||||
<Topic id="DatesInJSON" visible="True" title="Serializing Dates in JSON" />
|
||||
<Topic id="ReducingSerializedJSONSize" visible="True" title="Reducing Serialized JSON Size" />
|
||||
<Topic id="SerializingJSONFragments" visible="True" title="Serializing Partial JSON Fragments" />
|
||||
<Topic id="ConditionalProperties" visible="True" title="Conditional Properties" />
|
||||
<Topic id="ContractResolver" visible="True" title="Serialization using ContractResolver" />
|
||||
</Topic>
|
||||
<Topic id="LINQtoJSON" visible="True" title="LINQ to JSON">
|
||||
<Topic id="ParsingLINQtoJSON" visible="True" title="Parsing JSON" />
|
||||
<Topic id="CreatingLINQtoJSON" visible="True" title="Creating JSON" />
|
||||
<Topic id="QueryingLINQtoJSON" visible="True" title="Querying JSON with LINQ" />
|
||||
<Topic id="SelectToken" visible="True" title="Querying JSON with SelectToken" />
|
||||
</Topic>
|
||||
<Topic id="Performance" visible="True" title="Performance" />
|
||||
<Topic id="JsonSchema" visible="True" title="Validating JSON" />
|
||||
<Topic id="ReadingWritingJSON" visible="True" title="Basic Reading and Writing JSON" />
|
||||
<Topic id="ConvertingJSONandXML" visible="True" title="Converting between JSON and XML" />
|
||||
<Topic id="JsonNetVsWindowsDataJson" visible="True" title="Json.NET vs Windows.Data.Json" />
|
||||
<Topic id="JsonNetVsDotNetSerializers" visible="True" isSelected="true" title="Json.NET vs .NET Serializers" />
|
||||
</Topics>
|
||||
+194
-180
@@ -1,181 +1,195 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
|
||||
<PropertyGroup>
|
||||
<!-- The configuration and platform will be used to determine which
|
||||
assemblies to include from solution and project documentation
|
||||
sources -->
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{fd19f68e-72c8-4576-9775-b4480b0db686}</ProjectGuid>
|
||||
<SHFBSchemaVersion>1.9.5.0</SHFBSchemaVersion>
|
||||
<!-- AssemblyName, Name, and RootNamespace are not used by SHFB but Visual
|
||||
Studio adds them anyway -->
|
||||
<AssemblyName>Documentation</AssemblyName>
|
||||
<RootNamespace>Documentation</RootNamespace>
|
||||
<Name>Documentation</Name>
|
||||
<!-- SHFB properties -->
|
||||
<OutputPath>..\Working\Documentation\</OutputPath>
|
||||
<HtmlHelpName>Documentation</HtmlHelpName>
|
||||
<ProjectSummary>
|
||||
</ProjectSummary>
|
||||
<MissingTags>Summary, Parameter, Returns, AutoDocumentCtors, Namespace, TypeParameter, AutoDocumentDispose</MissingTags>
|
||||
<VisibleItems>InheritedMembers, InheritedFrameworkMembers, Protected, SealedProtected</VisibleItems>
|
||||
<HtmlHelp1xCompilerPath>
|
||||
</HtmlHelp1xCompilerPath>
|
||||
<HtmlHelp2xCompilerPath>
|
||||
</HtmlHelp2xCompilerPath>
|
||||
<SandcastlePath>
|
||||
</SandcastlePath>
|
||||
<WorkingPath>
|
||||
</WorkingPath>
|
||||
<BuildLogFile>
|
||||
</BuildLogFile>
|
||||
<HelpFileFormat>Website</HelpFileFormat>
|
||||
<FrameworkVersion>.NET Framework 4.0</FrameworkVersion>
|
||||
<HelpTitle>Json.NET - Documentation</HelpTitle>
|
||||
<PresentationStyle>vs2005</PresentationStyle>
|
||||
<NamingMethod>MemberName</NamingMethod>
|
||||
<DocumentationSourcePath>..\Src\Newtonsoft.Json\bin\Release</DocumentationSourcePath>
|
||||
<DocumentationSources>
|
||||
<DocumentationSource sourceFile="$(DocumentationSourcePath)\Newtonsoft.Json.dll" />
|
||||
<DocumentationSource sourceFile="$(DocumentationSourcePath)\Newtonsoft.Json.xml" />
|
||||
</DocumentationSources>
|
||||
<NamespaceSummaries>
|
||||
<NamespaceSummaryItem name="(global)" isDocumented="False" />
|
||||
<NamespaceSummaryItem name="Newtonsoft.Json" isDocumented="True">The <b>Newtonsoft.Json</b> namespace provides classes that are used to implement the core services of the framework.</NamespaceSummaryItem>
|
||||
<NamespaceSummaryItem name="Newtonsoft.Json.Converters" isDocumented="True">The <b>Newtonsoft.Json.Converters</b> namespace provides classes that inherit from <a href="T_Newtonsoft_Json_JsonConverter.htm">JsonConverter</a>.</NamespaceSummaryItem>
|
||||
<NamespaceSummaryItem name="Newtonsoft.Json.Linq" isDocumented="True">The <b>Newtonsoft.Json.Linq</b> namespace provides classes that are used to implement LINQ to JSON.</NamespaceSummaryItem>
|
||||
<NamespaceSummaryItem name="Newtonsoft.Json.Linq.ComponentModel" isDocumented="True">The <b>Newtonsoft.Json.Linq.ComponentModel</b> namespace provides classes for LINQ to JSON databinding.</NamespaceSummaryItem>
|
||||
<NamespaceSummaryItem name="Newtonsoft.Json.Schema" isDocumented="True">The <b>Newtonsoft.Json.Schema</b> namespace provides classes that are used to implement JSON schema.</NamespaceSummaryItem>
|
||||
<NamespaceSummaryItem name="Newtonsoft.Json.Serialization" isDocumented="True">The <b>Newtonsoft.Json.Linq</b> namespace provides classes that are used when serializing and deserializing JSON.</NamespaceSummaryItem>
|
||||
<NamespaceSummaryItem name="Newtonsoft.Json.Utilities" isDocumented="False" />
|
||||
<NamespaceSummaryItem name="Newtonsoft.Json.Bson" isDocumented="True">The <b>Newtonsoft.Json.Linq</b> namespace provides classes that are used to implement BSON.</NamespaceSummaryItem>
|
||||
</NamespaceSummaries>
|
||||
<RootNamespaceContainer>True</RootNamespaceContainer>
|
||||
<RootNamespaceTitle>API Reference</RootNamespaceTitle>
|
||||
<ComponentConfigurations>
|
||||
<ComponentConfig id="Post-transform Component" enabled="True">
|
||||
<component id="Post-transform Component" type="SandcastleBuilder.Components.PostTransformComponent" assembly="{@SHFBFolder}SandcastleBuilder.Components.dll">
|
||||
<!-- Code colorizer files (required).
|
||||
Attributes:
|
||||
Stylesheet file (required)
|
||||
Script file (required)
|
||||
"Copy" image file (required) -->
|
||||
<colorizer stylesheet="{@SHFBFolder}Colorizer\highlight.css" scriptFile="{@SHFBFolder}Colorizer\highlight.js" copyImage="{@SHFBFolder}Colorizer\CopyCode.gif" />
|
||||
<!-- Base output paths for the files (required). These should match the parent folder of the output path
|
||||
of the HTML files (see each of the SaveComponent instances in the configuration files). -->
|
||||
<outputPaths>
|
||||
{@HelpFormatOutputPaths}
|
||||
</outputPaths>
|
||||
<!-- Logo image file (optional). Filename is required. The height, width, altText, placement, and
|
||||
alignment attributes are optional. -->
|
||||
<logoFile filename="{@ProjectFolder}logo.jpg" height="0" width="0" altText="Json.NET" placement="left" alignment="left" />
|
||||
</component>
|
||||
</ComponentConfig>
|
||||
<ComponentConfig id="Code Block Component" enabled="True">
|
||||
<component id="Code Block Component" type="SandcastleBuilder.Components.CodeBlockComponent" assembly="{@SHFBFolder}SandcastleBuilder.Components.dll">
|
||||
<basePath value="{@HtmlEncProjectFolder}" />
|
||||
<languageFilter value="true" />
|
||||
<allowMissingSource value="false" />
|
||||
<removeRegionMarkers value="false" />
|
||||
<colorizer syntaxFile="{@SHFBFolder}Colorizer\highlight.xml" styleFile="{@SHFBFolder}Colorizer\highlight.xsl" copyImageUrl="../icons/CopyCode.gif" language="cs" tabSize="0" numberLines="true" outlining="false" keepSeeTags="false" defaultTitle="true" />
|
||||
</component>
|
||||
</ComponentConfig>
|
||||
<ComponentConfig id="Cached Reflection Index Data" enabled="True">
|
||||
<component id="Cached Reflection Index Data" type="SandcastleBuilder.Components.CachedCopyFromIndexComponent" assembly="{@SHFBFolder}SandcastleBuilder.Components.dll">
|
||||
<index name="reflection" value="/reflection/apis/api" key="@id" cache="10">
|
||||
<cache base="{@SandcastlePath}Data\Reflection" recurse="true" files="*.xml" cacheFile="{@LocalDataFolder}Cache\Reflection.cache" />
|
||||
<data files="reflection.xml" />
|
||||
</index>
|
||||
<copy name="reflection" source="*" target="/document/reference" />
|
||||
</component>
|
||||
</ComponentConfig>
|
||||
<ComponentConfig id="Cached MSDN URL References" enabled="True">
|
||||
<component id="Cached MSDN URL References" type="SandcastleBuilder.Components.CachedResolveReferenceLinksComponent" assembly="{@SHFBFolder}SandcastleBuilder.Components.dll" locale="{@Locale}" linkTarget="{@SdkLinkTarget}">
|
||||
<helpOutput format="HtmlHelp1">
|
||||
<cache filename="{@LocalDataFolder}Cache\MsdnUrl.cache" />
|
||||
<targets base="{@SandcastlePath}Data\Reflection" recurse="true" files="*.xml" type="{@HtmlSdkLinkType}" />
|
||||
<targets files="reflection.xml" type="Local" />
|
||||
</helpOutput>
|
||||
<helpOutput format="MSHelp2">
|
||||
<cache filename="{@LocalDataFolder}Cache\MsdnUrl.cache" />
|
||||
<targets base="{@SandcastlePath}Data\Reflection" recurse="true" files="*.xml" type="{@MSHelp2SdkLinkType}" />
|
||||
<targets files="reflection.xml" type="Index" />
|
||||
</helpOutput>
|
||||
<helpOutput format="MSHelpViewer">
|
||||
<cache filename="{@LocalDataFolder}Cache\MsdnUrl.cache" />
|
||||
<targets base="{@SandcastlePath}Data\Reflection" recurse="true" files="*.xml" type="{@MSHelpViewerSdkLinkType}" />
|
||||
<targets files="reflection.xml" type="Id" />
|
||||
</helpOutput>
|
||||
<helpOutput format="Website">
|
||||
<cache filename="{@LocalDataFolder}Cache\MsdnUrl.cache" />
|
||||
<targets base="{@SandcastlePath}Data\Reflection" recurse="true" files="*.xml" type="{@WebsiteSdkLinkType}" />
|
||||
<targets files="reflection.xml" type="Local" />
|
||||
</helpOutput>
|
||||
</component>
|
||||
</ComponentConfig>
|
||||
<ComponentConfig id="Cached Framework Comments Index Data" enabled="True">
|
||||
<component id="Cached Framework Comments Index Data" type="SandcastleBuilder.Components.CachedCopyFromIndexComponent" assembly="{@SHFBFolder}SandcastleBuilder.Components.dll">
|
||||
<index name="comments" value="/doc/members/member" key="@name" cache="100">
|
||||
{@CachedFrameworkCommentList}
|
||||
{@CommentFileList}
|
||||
</index>
|
||||
<copy name="comments" source="*" target="/document/comments" />
|
||||
</component>
|
||||
</ComponentConfig>
|
||||
</ComponentConfigurations>
|
||||
<IndentHtml>False</IndentHtml>
|
||||
</PropertyGroup>
|
||||
<!-- There are no properties for these two groups but they need to appear in
|
||||
order for Visual Studio to perform the build. -->
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="donate.gif" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="ConditionalProperties.aml" />
|
||||
<None Include="CustomCreationConverter.aml" />
|
||||
<None Include="ContractResolver.aml" />
|
||||
<None Include="ConvertingJSONandXML.aml" />
|
||||
<None Include="CreatingLINQtoJSON.aml" />
|
||||
<None Include="Performance.aml" />
|
||||
<None Include="JsonSchema.aml" />
|
||||
<None Include="JsonSchema.aml" />
|
||||
<None Include="ParsingLINQtoJSON.aml" />
|
||||
<None Include="QueryingLINQtoJSON.aml" />
|
||||
<None Include="ReadingWritingJSON.aml" />
|
||||
<None Include="SelectToken.aml" />
|
||||
<None Include="LINQtoJSON.aml" />
|
||||
<None Include="SerializingJSONFragments.aml" />
|
||||
<None Include="ReducingSerializedJSONSize.aml" />
|
||||
<None Include="DatesInJSON.aml" />
|
||||
<None Include="SerializingCollections.aml" />
|
||||
<None Include="PreserveObjectReferences.aml" />
|
||||
<None Include="SerializationErrorHandling.aml" />
|
||||
<None Include="SerializationCallbacks.aml" />
|
||||
<None Include="SerializationAttributes.aml" />
|
||||
<None Include="SerializationGuide.aml" />
|
||||
<None Include="SerializationSettings.aml" />
|
||||
<None Include="SerializingJSON.aml" />
|
||||
<None Include="Introduction.aml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ContentLayout Include="doc.content" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Image Include="performance.png">
|
||||
<ImageId>performance</ImageId>
|
||||
<AlternateText>performance</AlternateText>
|
||||
</Image>
|
||||
<Image Include="logo.jpg">
|
||||
<ImageId>logo</ImageId>
|
||||
<AlternateText>logo</AlternateText>
|
||||
</Image>
|
||||
</ItemGroup>
|
||||
<!-- Import the SHFB build targets -->
|
||||
<Import Project="$(SHFBROOT)\SandcastleHelpFileBuilder.targets" />
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
|
||||
<PropertyGroup>
|
||||
<!-- The configuration and platform will be used to determine which
|
||||
assemblies to include from solution and project documentation
|
||||
sources -->
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{fd19f68e-72c8-4576-9775-b4480b0db686}</ProjectGuid>
|
||||
<SHFBSchemaVersion>1.9.5.0</SHFBSchemaVersion>
|
||||
<!-- AssemblyName, Name, and RootNamespace are not used by SHFB but Visual
|
||||
Studio adds them anyway -->
|
||||
<AssemblyName>Documentation</AssemblyName>
|
||||
<RootNamespace>Documentation</RootNamespace>
|
||||
<Name>Documentation</Name>
|
||||
<!-- SHFB properties -->
|
||||
<OutputPath>..\Working\Documentation\</OutputPath>
|
||||
<HtmlHelpName>Documentation</HtmlHelpName>
|
||||
<ProjectSummary>
|
||||
</ProjectSummary>
|
||||
<MissingTags>Summary, Parameter, Returns, AutoDocumentCtors, Namespace, TypeParameter, AutoDocumentDispose</MissingTags>
|
||||
<VisibleItems>InheritedMembers, InheritedFrameworkMembers, Protected, SealedProtected</VisibleItems>
|
||||
<HtmlHelp1xCompilerPath>
|
||||
</HtmlHelp1xCompilerPath>
|
||||
<HtmlHelp2xCompilerPath>
|
||||
</HtmlHelp2xCompilerPath>
|
||||
<SandcastlePath>
|
||||
</SandcastlePath>
|
||||
<WorkingPath>
|
||||
</WorkingPath>
|
||||
<BuildLogFile>
|
||||
</BuildLogFile>
|
||||
<HelpFileFormat>Website</HelpFileFormat>
|
||||
<FrameworkVersion>.NET Framework 4.0</FrameworkVersion>
|
||||
<HelpTitle>Json.NET - Documentation</HelpTitle>
|
||||
<PresentationStyle>vs2005</PresentationStyle>
|
||||
<NamingMethod>MemberName</NamingMethod>
|
||||
<DocumentationSourcePath>..\Src\Newtonsoft.Json\bin\Release</DocumentationSourcePath>
|
||||
<DocumentationSources>
|
||||
<DocumentationSource sourceFile="$(DocumentationSourcePath)\Newtonsoft.Json.dll" />
|
||||
<DocumentationSource sourceFile="$(DocumentationSourcePath)\Newtonsoft.Json.xml" />
|
||||
</DocumentationSources>
|
||||
<NamespaceSummaries>
|
||||
<NamespaceSummaryItem name="(global)" isDocumented="False" />
|
||||
<NamespaceSummaryItem name="Newtonsoft.Json" isDocumented="True">The <b>Newtonsoft.Json</b> namespace provides classes that are used to implement the core services of the framework.</NamespaceSummaryItem>
|
||||
<NamespaceSummaryItem name="Newtonsoft.Json.Converters" isDocumented="True">The <b>Newtonsoft.Json.Converters</b> namespace provides classes that inherit from <a href="T_Newtonsoft_Json_JsonConverter.htm">JsonConverter</a>.</NamespaceSummaryItem>
|
||||
<NamespaceSummaryItem name="Newtonsoft.Json.Linq" isDocumented="True">The <b>Newtonsoft.Json.Linq</b> namespace provides classes that are used to implement LINQ to JSON.</NamespaceSummaryItem>
|
||||
<NamespaceSummaryItem name="Newtonsoft.Json.Linq.ComponentModel" isDocumented="True">The <b>Newtonsoft.Json.Linq.ComponentModel</b> namespace provides classes for LINQ to JSON databinding.</NamespaceSummaryItem>
|
||||
<NamespaceSummaryItem name="Newtonsoft.Json.Schema" isDocumented="True">The <b>Newtonsoft.Json.Schema</b> namespace provides classes that are used to implement JSON schema.</NamespaceSummaryItem>
|
||||
<NamespaceSummaryItem name="Newtonsoft.Json.Serialization" isDocumented="True">The <b>Newtonsoft.Json.Linq</b> namespace provides classes that are used when serializing and deserializing JSON.</NamespaceSummaryItem>
|
||||
<NamespaceSummaryItem name="Newtonsoft.Json.Utilities" isDocumented="False" />
|
||||
<NamespaceSummaryItem name="Newtonsoft.Json.Bson" isDocumented="True">The <b>Newtonsoft.Json.Linq</b> namespace provides classes that are used to implement BSON.</NamespaceSummaryItem>
|
||||
</NamespaceSummaries>
|
||||
<RootNamespaceContainer>True</RootNamespaceContainer>
|
||||
<RootNamespaceTitle>API Reference</RootNamespaceTitle>
|
||||
<ComponentConfigurations>
|
||||
<ComponentConfig id="Post-transform Component" enabled="True">
|
||||
<component id="Post-transform Component" type="SandcastleBuilder.Components.PostTransformComponent" assembly="{@SHFBFolder}SandcastleBuilder.Components.dll">
|
||||
<!-- Code colorizer files (required).
|
||||
Attributes:
|
||||
Stylesheet file (required)
|
||||
Script file (required)
|
||||
"Copy" image file (required) -->
|
||||
<colorizer stylesheet="{@SHFBFolder}Colorizer\highlight.css" scriptFile="{@SHFBFolder}Colorizer\highlight.js" copyImage="{@SHFBFolder}Colorizer\CopyCode.gif" />
|
||||
<!-- Base output paths for the files (required). These should match the parent folder of the output path
|
||||
of the HTML files (see each of the SaveComponent instances in the configuration files). -->
|
||||
<outputPaths>
|
||||
{@HelpFormatOutputPaths}
|
||||
</outputPaths>
|
||||
<!-- Logo image file (optional). Filename is required. The height, width, altText, placement, and
|
||||
alignment attributes are optional. -->
|
||||
<logoFile filename="{@ProjectFolder}logo.jpg" height="0" width="0" altText="Json.NET" placement="left" alignment="left" />
|
||||
</component>
|
||||
</ComponentConfig>
|
||||
<ComponentConfig id="Code Block Component" enabled="True">
|
||||
<component id="Code Block Component" type="SandcastleBuilder.Components.CodeBlockComponent" assembly="{@SHFBFolder}SandcastleBuilder.Components.dll">
|
||||
<basePath value="{@HtmlEncProjectFolder}" />
|
||||
<languageFilter value="true" />
|
||||
<allowMissingSource value="false" />
|
||||
<removeRegionMarkers value="false" />
|
||||
<colorizer syntaxFile="{@SHFBFolder}Colorizer\highlight.xml" styleFile="{@SHFBFolder}Colorizer\highlight.xsl" copyImageUrl="../icons/CopyCode.gif" language="cs" tabSize="0" numberLines="true" outlining="false" keepSeeTags="false" defaultTitle="true" />
|
||||
</component>
|
||||
</ComponentConfig>
|
||||
<ComponentConfig id="Cached Reflection Index Data" enabled="True">
|
||||
<component id="Cached Reflection Index Data" type="SandcastleBuilder.Components.CachedCopyFromIndexComponent" assembly="{@SHFBFolder}SandcastleBuilder.Components.dll">
|
||||
<index name="reflection" value="/reflection/apis/api" key="@id" cache="10">
|
||||
<cache base="{@SandcastlePath}Data\Reflection" recurse="true" files="*.xml" cacheFile="{@LocalDataFolder}Cache\Reflection.cache" />
|
||||
<data files="reflection.xml" />
|
||||
</index>
|
||||
<copy name="reflection" source="*" target="/document/reference" />
|
||||
</component>
|
||||
</ComponentConfig>
|
||||
<ComponentConfig id="Cached MSDN URL References" enabled="True">
|
||||
<component id="Cached MSDN URL References" type="SandcastleBuilder.Components.CachedResolveReferenceLinksComponent" assembly="{@SHFBFolder}SandcastleBuilder.Components.dll" locale="{@Locale}" linkTarget="{@SdkLinkTarget}">
|
||||
<helpOutput format="HtmlHelp1">
|
||||
<cache filename="{@LocalDataFolder}Cache\MsdnUrl.cache" />
|
||||
<targets base="{@SandcastlePath}Data\Reflection" recurse="true" files="*.xml" type="{@HtmlSdkLinkType}" />
|
||||
<targets files="reflection.xml" type="Local" />
|
||||
</helpOutput>
|
||||
<helpOutput format="MSHelp2">
|
||||
<cache filename="{@LocalDataFolder}Cache\MsdnUrl.cache" />
|
||||
<targets base="{@SandcastlePath}Data\Reflection" recurse="true" files="*.xml" type="{@MSHelp2SdkLinkType}" />
|
||||
<targets files="reflection.xml" type="Index" />
|
||||
</helpOutput>
|
||||
<helpOutput format="MSHelpViewer">
|
||||
<cache filename="{@LocalDataFolder}Cache\MsdnUrl.cache" />
|
||||
<targets base="{@SandcastlePath}Data\Reflection" recurse="true" files="*.xml" type="{@MSHelpViewerSdkLinkType}" />
|
||||
<targets files="reflection.xml" type="Id" />
|
||||
</helpOutput>
|
||||
<helpOutput format="Website">
|
||||
<cache filename="{@LocalDataFolder}Cache\MsdnUrl.cache" />
|
||||
<targets base="{@SandcastlePath}Data\Reflection" recurse="true" files="*.xml" type="{@WebsiteSdkLinkType}" />
|
||||
<targets files="reflection.xml" type="Local" />
|
||||
</helpOutput>
|
||||
</component>
|
||||
</ComponentConfig>
|
||||
<ComponentConfig id="Cached Framework Comments Index Data" enabled="True">
|
||||
<component id="Cached Framework Comments Index Data" type="SandcastleBuilder.Components.CachedCopyFromIndexComponent" assembly="{@SHFBFolder}SandcastleBuilder.Components.dll">
|
||||
<index name="comments" value="/doc/members/member" key="@name" cache="100">
|
||||
{@CachedFrameworkCommentList}
|
||||
{@CommentFileList}
|
||||
</index>
|
||||
<copy name="comments" source="*" target="/document/comments" />
|
||||
</component>
|
||||
</ComponentConfig>
|
||||
</ComponentConfigurations>
|
||||
<IndentHtml>False</IndentHtml>
|
||||
</PropertyGroup>
|
||||
<!-- There are no properties for these two groups but they need to appear in
|
||||
order for Visual Studio to perform the build. -->
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="donate.gif" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="JsonNetVsDotNetSerializers.aml" />
|
||||
<None Include="JsonNetVsWindowsDataJson.aml" />
|
||||
<None Include="ConditionalProperties.aml" />
|
||||
<None Include="CustomCreationConverter.aml" />
|
||||
<None Include="ContractResolver.aml" />
|
||||
<None Include="ConvertingJSONandXML.aml" />
|
||||
<None Include="CreatingLINQtoJSON.aml" />
|
||||
<None Include="Performance.aml" />
|
||||
<None Include="JsonSchema.aml" />
|
||||
<None Include="JsonSchema.aml" />
|
||||
<None Include="ParsingLINQtoJSON.aml" />
|
||||
<None Include="QueryingLINQtoJSON.aml" />
|
||||
<None Include="ReadingWritingJSON.aml" />
|
||||
<None Include="SelectToken.aml" />
|
||||
<None Include="LINQtoJSON.aml" />
|
||||
<None Include="SerializingJSONFragments.aml" />
|
||||
<None Include="ReducingSerializedJSONSize.aml" />
|
||||
<None Include="DatesInJSON.aml" />
|
||||
<None Include="SerializingCollections.aml" />
|
||||
<None Include="PreserveObjectReferences.aml" />
|
||||
<None Include="SerializationErrorHandling.aml" />
|
||||
<None Include="SerializationCallbacks.aml" />
|
||||
<None Include="SerializationAttributes.aml" />
|
||||
<None Include="SerializationGuide.aml" />
|
||||
<None Include="SerializationSettings.aml" />
|
||||
<None Include="SerializingJSON.aml" />
|
||||
<None Include="Introduction.aml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ContentLayout Include="doc.content" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="tick.png">
|
||||
<ImageId>tick</ImageId>
|
||||
<AlternateText>tick</AlternateText>
|
||||
</Content>
|
||||
<Content Include="cross.png">
|
||||
<ImageId>cross</ImageId>
|
||||
<AlternateText>cross</AlternateText>
|
||||
</Content>
|
||||
<Image Include="jsonnetwindowsdatajson.png">
|
||||
<ImageId>jsonnetwindowsdatajson</ImageId>
|
||||
<AlternateText>jsonnetwindowsdatajson</AlternateText>
|
||||
</Image>
|
||||
<Image Include="performance.png">
|
||||
<ImageId>performance</ImageId>
|
||||
<AlternateText>performance</AlternateText>
|
||||
</Image>
|
||||
<Image Include="logo.jpg">
|
||||
<ImageId>logo</ImageId>
|
||||
<AlternateText>logo</AlternateText>
|
||||
</Image>
|
||||
</ItemGroup>
|
||||
<!-- Import the SHFB build targets -->
|
||||
<Import Project="$(SHFBROOT)\SandcastleHelpFileBuilder.targets" />
|
||||
</Project>
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 6.4 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 537 B |
@@ -0,0 +1,108 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Newtonsoft.Json.Linq;
|
||||
|
||||
namespace Newtonsoft.Json.Tests.Documentation
|
||||
{
|
||||
public class JsonNetVsWindowsDataJsonTests
|
||||
{
|
||||
public void CreatingJson()
|
||||
{
|
||||
#if NETFX_CORE
|
||||
#region CreatingJSON
|
||||
// Windows.Data.Json
|
||||
// -----------------
|
||||
JsonObject jsonObject = new JsonObject
|
||||
{
|
||||
{"CPU", JsonValue.CreateStringValue("Intel")},
|
||||
{
|
||||
"Drives", new JsonArray
|
||||
{
|
||||
JsonValue.CreateStringValue("DVD read/writer"),
|
||||
JsonValue.CreateStringValue("500 gigabyte hard drive")
|
||||
}
|
||||
}
|
||||
};
|
||||
string json1 = jsonObject.Stringify();
|
||||
|
||||
// LINQ to JSON
|
||||
// ------------
|
||||
JObject jObject = new JObject
|
||||
{
|
||||
{"CPU", "Intel"},
|
||||
{
|
||||
"Drives", new JArray
|
||||
{
|
||||
"DVD read/writer",
|
||||
"500 gigabyte hard drive"
|
||||
}
|
||||
}
|
||||
};
|
||||
string json2 = jObject.ToString();
|
||||
#endregion
|
||||
#endif
|
||||
}
|
||||
|
||||
public void QueryingJson()
|
||||
{
|
||||
#if NETFX_CORE
|
||||
#region QueryingJSON
|
||||
string json = @"{
|
||||
'channel': {
|
||||
'title': 'James Newton-King',
|
||||
'link': 'http://james.newtonking.com',
|
||||
'description': 'James Newton-King's blog.',
|
||||
'item': [
|
||||
{
|
||||
'title': 'Json.NET 1.3 + New license + Now on CodePlex',
|
||||
'description': 'Annoucing the release of Json.NET 1.3, the MIT license and the source being available on CodePlex',
|
||||
'link': 'http://james.newtonking.com/projects/json-net.aspx',
|
||||
'category': [
|
||||
'Json.NET',
|
||||
'CodePlex'
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}";
|
||||
|
||||
// Windows.Data.Json
|
||||
// -----------------
|
||||
JsonObject jsonObject = JsonObject.Parse(json);
|
||||
string itemTitle1 = jsonObject["channel"].GetObject()["item"].GetArray()[0].GetObject()["title"].GetString();
|
||||
|
||||
// LINQ to JSON
|
||||
// ------------
|
||||
JObject jObject = JObject.Parse(json);
|
||||
string itemTitle2 = (string)jObject["channel"]["item"][0]["title"];
|
||||
#endregion
|
||||
#endif
|
||||
}
|
||||
|
||||
public void Converting()
|
||||
{
|
||||
#if NETFX_CORE
|
||||
#region Converting
|
||||
JsonObject jsonObject = new JsonObject
|
||||
{
|
||||
{"CPU", JsonValue.CreateStringValue("Intel")},
|
||||
{"Drives", new JsonArray {
|
||||
JsonValue.CreateStringValue("DVD read/writer"),
|
||||
JsonValue.CreateStringValue("500 gigabyte hard drive")
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// convert Windows.Data.Json to LINQ to JSON
|
||||
JObject o = JObject.FromObject(jsonObject);
|
||||
|
||||
// convert LINQ to JSON to Windows.Data.Json
|
||||
JArray a = (JArray)o["Drives"];
|
||||
JsonArray jsonArray = a.ToObject<JsonArray>();
|
||||
#endregion
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -713,6 +713,7 @@ _____'propertyName': NaN
|
||||
jsonWriter.WriteValue(data);
|
||||
jsonWriter.WriteValue((object)data);
|
||||
jsonWriter.WriteValue((byte[])null);
|
||||
jsonWriter.WriteValue((Uri)null);
|
||||
jsonWriter.WriteEndArray();
|
||||
}
|
||||
|
||||
@@ -720,6 +721,7 @@ _____'propertyName': NaN
|
||||
""SGVsbG8gd29ybGQu"",
|
||||
""SGVsbG8gd29ybGQu"",
|
||||
""SGVsbG8gd29ybGQu"",
|
||||
null,
|
||||
null
|
||||
]";
|
||||
string result = sb.ToString();
|
||||
|
||||
@@ -64,8 +64,8 @@ namespace Newtonsoft.Json.Tests
|
||||
[TestFixture]
|
||||
public class PerformanceTests : TestFixtureBase
|
||||
{
|
||||
private const int Iterations = 100;
|
||||
//private const int Iterations = 5000;
|
||||
//private const int Iterations = 100;
|
||||
private const int Iterations = 5000;
|
||||
|
||||
#region Data
|
||||
|
||||
@@ -122,21 +122,19 @@ namespace Newtonsoft.Json.Tests
|
||||
TestClass test = CreateSerializationObject();
|
||||
|
||||
SerializeTests(test);
|
||||
|
||||
Deserialize();
|
||||
}
|
||||
|
||||
private void SerializeTests(object value)
|
||||
{
|
||||
BenchmarkSerializeMethod(SerializeMethod.DataContractSerializer, value);
|
||||
BenchmarkSerializeMethod(SerializeMethod.BinaryFormatter, value);
|
||||
BenchmarkSerializeMethod(SerializeMethod.JavaScriptSerializer, value);
|
||||
BenchmarkSerializeMethod(SerializeMethod.DataContractJsonSerializer, value);
|
||||
BenchmarkSerializeMethod(SerializeMethod.JsonNet, value);
|
||||
BenchmarkSerializeMethod(SerializeMethod.JsonNetLinq, value);
|
||||
//BenchmarkSerializeMethod(SerializeMethod.DataContractSerializer, value);
|
||||
//BenchmarkSerializeMethod(SerializeMethod.BinaryFormatter, value);
|
||||
//BenchmarkSerializeMethod(SerializeMethod.JavaScriptSerializer, value);
|
||||
//BenchmarkSerializeMethod(SerializeMethod.DataContractJsonSerializer, value);
|
||||
//BenchmarkSerializeMethod(SerializeMethod.JsonNet, value);
|
||||
//BenchmarkSerializeMethod(SerializeMethod.JsonNetLinq, value);
|
||||
BenchmarkSerializeMethod(SerializeMethod.JsonNetManual, value);
|
||||
BenchmarkSerializeMethod(SerializeMethod.JsonNetWithIsoConverter, value);
|
||||
BenchmarkSerializeMethod(SerializeMethod.JsonNetBinary, value);
|
||||
//BenchmarkSerializeMethod(SerializeMethod.JsonNetWithIsoConverter, value);
|
||||
//BenchmarkSerializeMethod(SerializeMethod.JsonNetBinary, value);
|
||||
}
|
||||
|
||||
[Test]
|
||||
|
||||
@@ -76,5 +76,5 @@ using System.Security;
|
||||
// by using the '*' as shown below:
|
||||
[assembly: AssemblyVersion("4.5.0.0")]
|
||||
#if !PocketPC
|
||||
[assembly: AssemblyFileVersion("4.5.10.15431")]
|
||||
[assembly: AssemblyFileVersion("4.5.10.15501")]
|
||||
#endif
|
||||
|
||||
@@ -148,7 +148,7 @@ namespace Newtonsoft.Json
|
||||
/// </summary>
|
||||
public override void WriteStartObject()
|
||||
{
|
||||
base.WriteStartObject();
|
||||
InternalWriteStart(JsonToken.StartObject, JsonContainerType.Object);
|
||||
|
||||
_writer.Write("{");
|
||||
}
|
||||
@@ -158,7 +158,7 @@ namespace Newtonsoft.Json
|
||||
/// </summary>
|
||||
public override void WriteStartArray()
|
||||
{
|
||||
base.WriteStartArray();
|
||||
InternalWriteStart(JsonToken.StartArray, JsonContainerType.Array);
|
||||
|
||||
_writer.Write("[");
|
||||
}
|
||||
@@ -169,7 +169,7 @@ namespace Newtonsoft.Json
|
||||
/// <param name="name">The name of the constructor.</param>
|
||||
public override void WriteStartConstructor(string name)
|
||||
{
|
||||
base.WriteStartConstructor(name);
|
||||
InternalWriteStart(JsonToken.StartConstructor, JsonContainerType.Constructor);
|
||||
|
||||
_writer.Write("new ");
|
||||
_writer.Write(name);
|
||||
@@ -204,7 +204,7 @@ namespace Newtonsoft.Json
|
||||
/// <param name="name">The name of the property.</param>
|
||||
public override void WritePropertyName(string name)
|
||||
{
|
||||
base.WritePropertyName(name);
|
||||
InternalWritePropertyName(name);
|
||||
|
||||
JavaScriptUtils.WriteEscapedJavaScriptString(_writer, name, _quoteChar, _quoteName);
|
||||
|
||||
@@ -259,7 +259,7 @@ namespace Newtonsoft.Json
|
||||
/// </summary>
|
||||
public override void WriteNull()
|
||||
{
|
||||
base.WriteNull();
|
||||
InternalWriteNull();
|
||||
WriteValueInternal(JsonConvert.Null, JsonToken.Null);
|
||||
}
|
||||
|
||||
@@ -268,7 +268,7 @@ namespace Newtonsoft.Json
|
||||
/// </summary>
|
||||
public override void WriteUndefined()
|
||||
{
|
||||
base.WriteUndefined();
|
||||
InternalWriteUndefined();
|
||||
WriteValueInternal(JsonConvert.Undefined, JsonToken.Undefined);
|
||||
}
|
||||
|
||||
@@ -278,7 +278,7 @@ namespace Newtonsoft.Json
|
||||
/// <param name="json">The raw JSON to write.</param>
|
||||
public override void WriteRaw(string json)
|
||||
{
|
||||
base.WriteRaw(json);
|
||||
InternalWriteRaw();
|
||||
|
||||
_writer.Write(json);
|
||||
}
|
||||
@@ -289,7 +289,8 @@ namespace Newtonsoft.Json
|
||||
/// <param name="value">The <see cref="String"/> value to write.</param>
|
||||
public override void WriteValue(string value)
|
||||
{
|
||||
base.WriteValue(value);
|
||||
InternalWriteValue(JsonToken.String);
|
||||
|
||||
if (value == null)
|
||||
WriteValueInternal(JsonConvert.Null, JsonToken.Null);
|
||||
else
|
||||
@@ -302,7 +303,7 @@ namespace Newtonsoft.Json
|
||||
/// <param name="value">The <see cref="Int32"/> value to write.</param>
|
||||
public override void WriteValue(int value)
|
||||
{
|
||||
base.WriteValue(value);
|
||||
InternalWriteValue(JsonToken.Integer);
|
||||
WriteValueInternal(JsonConvert.ToString(value), JsonToken.Integer);
|
||||
}
|
||||
|
||||
@@ -313,7 +314,7 @@ namespace Newtonsoft.Json
|
||||
[CLSCompliant(false)]
|
||||
public override void WriteValue(uint value)
|
||||
{
|
||||
base.WriteValue(value);
|
||||
InternalWriteValue(JsonToken.Integer);
|
||||
WriteValueInternal(JsonConvert.ToString(value), JsonToken.Integer);
|
||||
}
|
||||
|
||||
@@ -323,7 +324,7 @@ namespace Newtonsoft.Json
|
||||
/// <param name="value">The <see cref="Int64"/> value to write.</param>
|
||||
public override void WriteValue(long value)
|
||||
{
|
||||
base.WriteValue(value);
|
||||
InternalWriteValue(JsonToken.Integer);
|
||||
WriteValueInternal(JsonConvert.ToString(value), JsonToken.Integer);
|
||||
}
|
||||
|
||||
@@ -334,7 +335,7 @@ namespace Newtonsoft.Json
|
||||
[CLSCompliant(false)]
|
||||
public override void WriteValue(ulong value)
|
||||
{
|
||||
base.WriteValue(value);
|
||||
InternalWriteValue(JsonToken.Integer);
|
||||
WriteValueInternal(JsonConvert.ToString(value), JsonToken.Integer);
|
||||
}
|
||||
|
||||
@@ -344,7 +345,7 @@ namespace Newtonsoft.Json
|
||||
/// <param name="value">The <see cref="Single"/> value to write.</param>
|
||||
public override void WriteValue(float value)
|
||||
{
|
||||
base.WriteValue(value);
|
||||
InternalWriteValue(JsonToken.Float);
|
||||
WriteValueInternal(JsonConvert.ToString(value), JsonToken.Float);
|
||||
}
|
||||
|
||||
@@ -354,7 +355,7 @@ namespace Newtonsoft.Json
|
||||
/// <param name="value">The <see cref="Double"/> value to write.</param>
|
||||
public override void WriteValue(double value)
|
||||
{
|
||||
base.WriteValue(value);
|
||||
InternalWriteValue(JsonToken.Float);
|
||||
WriteValueInternal(JsonConvert.ToString(value), JsonToken.Float);
|
||||
}
|
||||
|
||||
@@ -364,7 +365,7 @@ namespace Newtonsoft.Json
|
||||
/// <param name="value">The <see cref="Boolean"/> value to write.</param>
|
||||
public override void WriteValue(bool value)
|
||||
{
|
||||
base.WriteValue(value);
|
||||
InternalWriteValue(JsonToken.Boolean);
|
||||
WriteValueInternal(JsonConvert.ToString(value), JsonToken.Boolean);
|
||||
}
|
||||
|
||||
@@ -374,7 +375,7 @@ namespace Newtonsoft.Json
|
||||
/// <param name="value">The <see cref="Int16"/> value to write.</param>
|
||||
public override void WriteValue(short value)
|
||||
{
|
||||
base.WriteValue(value);
|
||||
InternalWriteValue(JsonToken.Integer);
|
||||
WriteValueInternal(JsonConvert.ToString(value), JsonToken.Integer);
|
||||
}
|
||||
|
||||
@@ -385,7 +386,7 @@ namespace Newtonsoft.Json
|
||||
[CLSCompliant(false)]
|
||||
public override void WriteValue(ushort value)
|
||||
{
|
||||
base.WriteValue(value);
|
||||
InternalWriteValue(JsonToken.Integer);
|
||||
WriteValueInternal(JsonConvert.ToString(value), JsonToken.Integer);
|
||||
}
|
||||
|
||||
@@ -395,8 +396,8 @@ namespace Newtonsoft.Json
|
||||
/// <param name="value">The <see cref="Char"/> value to write.</param>
|
||||
public override void WriteValue(char value)
|
||||
{
|
||||
base.WriteValue(value);
|
||||
WriteValueInternal(JsonConvert.ToString(value), JsonToken.Integer);
|
||||
InternalWriteValue(JsonToken.String);
|
||||
WriteValueInternal(JsonConvert.ToString(value), JsonToken.String);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -405,7 +406,7 @@ namespace Newtonsoft.Json
|
||||
/// <param name="value">The <see cref="Byte"/> value to write.</param>
|
||||
public override void WriteValue(byte value)
|
||||
{
|
||||
base.WriteValue(value);
|
||||
InternalWriteValue(JsonToken.Integer);
|
||||
WriteValueInternal(JsonConvert.ToString(value), JsonToken.Integer);
|
||||
}
|
||||
|
||||
@@ -416,7 +417,7 @@ namespace Newtonsoft.Json
|
||||
[CLSCompliant(false)]
|
||||
public override void WriteValue(sbyte value)
|
||||
{
|
||||
base.WriteValue(value);
|
||||
InternalWriteValue(JsonToken.Integer);
|
||||
WriteValueInternal(JsonConvert.ToString(value), JsonToken.Integer);
|
||||
}
|
||||
|
||||
@@ -426,7 +427,7 @@ namespace Newtonsoft.Json
|
||||
/// <param name="value">The <see cref="Decimal"/> value to write.</param>
|
||||
public override void WriteValue(decimal value)
|
||||
{
|
||||
base.WriteValue(value);
|
||||
InternalWriteValue(JsonToken.Float);
|
||||
WriteValueInternal(JsonConvert.ToString(value), JsonToken.Float);
|
||||
}
|
||||
|
||||
@@ -436,7 +437,7 @@ namespace Newtonsoft.Json
|
||||
/// <param name="value">The <see cref="DateTime"/> value to write.</param>
|
||||
public override void WriteValue(DateTime value)
|
||||
{
|
||||
base.WriteValue(value);
|
||||
InternalWriteValue(JsonToken.Date);
|
||||
value = JsonConvert.EnsureDateTime(value, DateTimeZoneHandling);
|
||||
JsonConvert.WriteDateTimeString(_writer, value, DateFormatHandling);
|
||||
}
|
||||
@@ -447,10 +448,13 @@ namespace Newtonsoft.Json
|
||||
/// <param name="value">The <see cref="T:Byte[]"/> value to write.</param>
|
||||
public override void WriteValue(byte[] value)
|
||||
{
|
||||
base.WriteValue(value);
|
||||
|
||||
if (value != null)
|
||||
if (value == null)
|
||||
{
|
||||
WriteNull();
|
||||
}
|
||||
else
|
||||
{
|
||||
InternalWriteValue(JsonToken.Bytes);
|
||||
_writer.Write(_quoteChar);
|
||||
Base64Encoder.Encode(value, 0, value.Length);
|
||||
Base64Encoder.Flush();
|
||||
@@ -465,7 +469,7 @@ namespace Newtonsoft.Json
|
||||
/// <param name="value">The <see cref="DateTimeOffset"/> value to write.</param>
|
||||
public override void WriteValue(DateTimeOffset value)
|
||||
{
|
||||
base.WriteValue(value);
|
||||
InternalWriteValue(JsonToken.Date);
|
||||
WriteValueInternal(JsonConvert.ToString(value, DateFormatHandling), JsonToken.Date);
|
||||
}
|
||||
#endif
|
||||
@@ -476,7 +480,7 @@ namespace Newtonsoft.Json
|
||||
/// <param name="value">The <see cref="Guid"/> value to write.</param>
|
||||
public override void WriteValue(Guid value)
|
||||
{
|
||||
base.WriteValue(value);
|
||||
InternalWriteValue(JsonToken.String);
|
||||
WriteValueInternal(JsonConvert.ToString(value), JsonToken.String);
|
||||
}
|
||||
|
||||
@@ -486,7 +490,7 @@ namespace Newtonsoft.Json
|
||||
/// <param name="value">The <see cref="TimeSpan"/> value to write.</param>
|
||||
public override void WriteValue(TimeSpan value)
|
||||
{
|
||||
base.WriteValue(value);
|
||||
InternalWriteValue(JsonToken.String);
|
||||
WriteValueInternal(JsonConvert.ToString(value), JsonToken.String);
|
||||
}
|
||||
|
||||
@@ -496,8 +500,15 @@ namespace Newtonsoft.Json
|
||||
/// <param name="value">The <see cref="Uri"/> value to write.</param>
|
||||
public override void WriteValue(Uri value)
|
||||
{
|
||||
base.WriteValue(value);
|
||||
WriteValueInternal(JsonConvert.ToString(value), JsonToken.String);
|
||||
if (value == null)
|
||||
{
|
||||
WriteNull();
|
||||
}
|
||||
else
|
||||
{
|
||||
InternalWriteValue(JsonToken.String);
|
||||
WriteValueInternal(JsonConvert.ToString(value), JsonToken.String);
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
@@ -507,7 +518,7 @@ namespace Newtonsoft.Json
|
||||
/// <param name="text">Text to place inside the comment.</param>
|
||||
public override void WriteComment(string text)
|
||||
{
|
||||
base.WriteComment(text);
|
||||
InternalWriteComment();
|
||||
|
||||
_writer.Write("/*");
|
||||
_writer.Write(text);
|
||||
@@ -520,7 +531,7 @@ namespace Newtonsoft.Json
|
||||
/// <param name="ws">The string of white space characters.</param>
|
||||
public override void WriteWhitespace(string ws)
|
||||
{
|
||||
base.WriteWhitespace(ws);
|
||||
InternalWriteWhitespace(ws);
|
||||
|
||||
_writer.Write(ws);
|
||||
}
|
||||
|
||||
@@ -54,7 +54,6 @@ namespace Newtonsoft.Json
|
||||
Array,
|
||||
ConstructorStart,
|
||||
Constructor,
|
||||
Bytes,
|
||||
Closed,
|
||||
Error
|
||||
}
|
||||
@@ -69,7 +68,7 @@ namespace Newtonsoft.Json
|
||||
/* StartObject */new[]{ State.ObjectStart, State.ObjectStart, State.Error, State.Error, State.ObjectStart, State.ObjectStart, State.ObjectStart, State.ObjectStart, State.Error, State.Error },
|
||||
/* StartArray */new[]{ State.ArrayStart, State.ArrayStart, State.Error, State.Error, State.ArrayStart, State.ArrayStart, State.ArrayStart, State.ArrayStart, State.Error, State.Error },
|
||||
/* StartConstructor */new[]{ State.ConstructorStart, State.ConstructorStart, State.Error, State.Error, State.ConstructorStart, State.ConstructorStart, State.ConstructorStart, State.ConstructorStart, State.Error, State.Error },
|
||||
/* StartProperty */new[]{ State.Property, State.Error, State.Property, State.Property, State.Error, State.Error, State.Error, State.Error, State.Error, State.Error },
|
||||
/* Property */new[]{ State.Property, State.Error, State.Property, State.Property, State.Error, State.Error, State.Error, State.Error, State.Error, State.Error },
|
||||
/* Comment */new[]{ State.Start, State.Property, State.ObjectStart, State.Object, State.ArrayStart, State.Array, State.Constructor, State.Constructor, State.Error, State.Error },
|
||||
/* Raw */new[]{ State.Start, State.Property, State.ObjectStart, State.Object, State.ArrayStart, State.Array, State.Constructor, State.Constructor, State.Error, State.Error },
|
||||
/* Value (this will be copied) */new[]{ State.Start, State.Object, State.Error, State.Error, State.Array, State.Array, State.Constructor, State.Constructor, State.Error, State.Error }
|
||||
@@ -157,7 +156,7 @@ namespace Newtonsoft.Json
|
||||
return JsonPosition.BuildPath(positions);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Gets the state of the writer.
|
||||
/// </summary>
|
||||
@@ -316,10 +315,15 @@ namespace Newtonsoft.Json
|
||||
/// Writes the beginning of a Json object.
|
||||
/// </summary>
|
||||
public virtual void WriteStartObject()
|
||||
{
|
||||
InternalWriteStart(JsonToken.StartObject, JsonContainerType.Object);
|
||||
}
|
||||
|
||||
internal void InternalWriteStart(JsonToken token, JsonContainerType container)
|
||||
{
|
||||
UpdateScopeWithFinishedValue();
|
||||
AutoComplete(JsonToken.StartObject);
|
||||
Push(JsonContainerType.Object);
|
||||
AutoComplete(token);
|
||||
Push(container);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -327,7 +331,7 @@ namespace Newtonsoft.Json
|
||||
/// </summary>
|
||||
public virtual void WriteEndObject()
|
||||
{
|
||||
AutoCompleteClose(JsonContainerType.Object);
|
||||
InternalWriteEnd(JsonContainerType.Object);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -335,9 +339,7 @@ namespace Newtonsoft.Json
|
||||
/// </summary>
|
||||
public virtual void WriteStartArray()
|
||||
{
|
||||
UpdateScopeWithFinishedValue();
|
||||
AutoComplete(JsonToken.StartArray);
|
||||
Push(JsonContainerType.Array);
|
||||
InternalWriteStart(JsonToken.StartArray, JsonContainerType.Array);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -345,7 +347,7 @@ namespace Newtonsoft.Json
|
||||
/// </summary>
|
||||
public virtual void WriteEndArray()
|
||||
{
|
||||
AutoCompleteClose(JsonContainerType.Array);
|
||||
InternalWriteEnd(JsonContainerType.Array);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -354,9 +356,7 @@ namespace Newtonsoft.Json
|
||||
/// <param name="name">The name of the constructor.</param>
|
||||
public virtual void WriteStartConstructor(string name)
|
||||
{
|
||||
UpdateScopeWithFinishedValue();
|
||||
AutoComplete(JsonToken.StartConstructor);
|
||||
Push(JsonContainerType.Constructor);
|
||||
InternalWriteStart(JsonToken.StartConstructor, JsonContainerType.Constructor);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -364,7 +364,12 @@ namespace Newtonsoft.Json
|
||||
/// </summary>
|
||||
public virtual void WriteEndConstructor()
|
||||
{
|
||||
AutoCompleteClose(JsonContainerType.Constructor);
|
||||
InternalWriteEnd(JsonContainerType.Constructor);
|
||||
}
|
||||
|
||||
internal void InternalWriteEnd(JsonContainerType container)
|
||||
{
|
||||
AutoCompleteClose(container);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -372,6 +377,11 @@ namespace Newtonsoft.Json
|
||||
/// </summary>
|
||||
/// <param name="name">The name of the property.</param>
|
||||
public virtual void WritePropertyName(string name)
|
||||
{
|
||||
InternalWritePropertyName(name);
|
||||
}
|
||||
|
||||
internal void InternalWritePropertyName(string name)
|
||||
{
|
||||
_currentPosition.PropertyName = name;
|
||||
AutoComplete(JsonToken.PropertyName);
|
||||
@@ -564,21 +574,6 @@ namespace Newtonsoft.Json
|
||||
}
|
||||
}
|
||||
|
||||
private JsonContainerType GetTypeForCloseToken(JsonToken token)
|
||||
{
|
||||
switch (token)
|
||||
{
|
||||
case JsonToken.EndObject:
|
||||
return JsonContainerType.Object;
|
||||
case JsonToken.EndArray:
|
||||
return JsonContainerType.Array;
|
||||
case JsonToken.EndConstructor:
|
||||
return JsonContainerType.Constructor;
|
||||
default:
|
||||
throw JsonWriterException.Create(this, "No type for token: " + token, null);
|
||||
}
|
||||
}
|
||||
|
||||
private JsonToken GetCloseTokenForType(JsonContainerType type)
|
||||
{
|
||||
switch (type)
|
||||
@@ -699,22 +694,16 @@ namespace Newtonsoft.Json
|
||||
{
|
||||
WriteValueDelimiter();
|
||||
}
|
||||
else if (_currentState == State.Property)
|
||||
{
|
||||
if (_formatting == Formatting.Indented)
|
||||
WriteIndentSpace();
|
||||
}
|
||||
|
||||
if (_formatting == Formatting.Indented)
|
||||
{
|
||||
WriteState writeState = WriteState;
|
||||
if (_currentState == State.Property)
|
||||
WriteIndentSpace();
|
||||
|
||||
// don't indent a property when it is the first token to be written (i.e. at the start)
|
||||
if ((tokenBeingWritten == JsonToken.PropertyName && writeState != WriteState.Start) ||
|
||||
writeState == WriteState.Array || writeState == WriteState.Constructor)
|
||||
{
|
||||
if ((_currentState == State.Array || _currentState == State.ArrayStart || _currentState == State.Constructor || _currentState == State.ConstructorStart)
|
||||
|| (tokenBeingWritten == JsonToken.PropertyName && _currentState != State.Start))
|
||||
WriteIndent();
|
||||
}
|
||||
}
|
||||
|
||||
_currentState = newState;
|
||||
@@ -725,6 +714,11 @@ namespace Newtonsoft.Json
|
||||
/// Writes a null value.
|
||||
/// </summary>
|
||||
public virtual void WriteNull()
|
||||
{
|
||||
InternalWriteNull();
|
||||
}
|
||||
|
||||
internal void InternalWriteNull()
|
||||
{
|
||||
UpdateScopeWithFinishedValue();
|
||||
AutoComplete(JsonToken.Null);
|
||||
@@ -734,6 +728,11 @@ namespace Newtonsoft.Json
|
||||
/// Writes an undefined value.
|
||||
/// </summary>
|
||||
public virtual void WriteUndefined()
|
||||
{
|
||||
InternalWriteUndefined();
|
||||
}
|
||||
|
||||
internal void InternalWriteUndefined()
|
||||
{
|
||||
UpdateScopeWithFinishedValue();
|
||||
AutoComplete(JsonToken.Undefined);
|
||||
@@ -744,6 +743,11 @@ namespace Newtonsoft.Json
|
||||
/// </summary>
|
||||
/// <param name="json">The raw JSON to write.</param>
|
||||
public virtual void WriteRaw(string json)
|
||||
{
|
||||
InternalWriteRaw();
|
||||
}
|
||||
|
||||
internal void InternalWriteRaw()
|
||||
{
|
||||
}
|
||||
|
||||
@@ -764,9 +768,14 @@ namespace Newtonsoft.Json
|
||||
/// </summary>
|
||||
/// <param name="value">The <see cref="String"/> value to write.</param>
|
||||
public virtual void WriteValue(string value)
|
||||
{
|
||||
InternalWriteValue(JsonToken.String);
|
||||
}
|
||||
|
||||
internal void InternalWriteValue(JsonToken token)
|
||||
{
|
||||
UpdateScopeWithFinishedValue();
|
||||
AutoComplete(JsonToken.String);
|
||||
AutoComplete(token);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -775,8 +784,7 @@ namespace Newtonsoft.Json
|
||||
/// <param name="value">The <see cref="Int32"/> value to write.</param>
|
||||
public virtual void WriteValue(int value)
|
||||
{
|
||||
UpdateScopeWithFinishedValue();
|
||||
AutoComplete(JsonToken.Integer);
|
||||
InternalWriteValue(JsonToken.Integer);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -786,8 +794,7 @@ namespace Newtonsoft.Json
|
||||
[CLSCompliant(false)]
|
||||
public virtual void WriteValue(uint value)
|
||||
{
|
||||
UpdateScopeWithFinishedValue();
|
||||
AutoComplete(JsonToken.Integer);
|
||||
InternalWriteValue(JsonToken.Integer);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -796,8 +803,7 @@ namespace Newtonsoft.Json
|
||||
/// <param name="value">The <see cref="Int64"/> value to write.</param>
|
||||
public virtual void WriteValue(long value)
|
||||
{
|
||||
UpdateScopeWithFinishedValue();
|
||||
AutoComplete(JsonToken.Integer);
|
||||
InternalWriteValue(JsonToken.Integer);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -807,8 +813,7 @@ namespace Newtonsoft.Json
|
||||
[CLSCompliant(false)]
|
||||
public virtual void WriteValue(ulong value)
|
||||
{
|
||||
UpdateScopeWithFinishedValue();
|
||||
AutoComplete(JsonToken.Integer);
|
||||
InternalWriteValue(JsonToken.Integer);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -817,8 +822,7 @@ namespace Newtonsoft.Json
|
||||
/// <param name="value">The <see cref="Single"/> value to write.</param>
|
||||
public virtual void WriteValue(float value)
|
||||
{
|
||||
UpdateScopeWithFinishedValue();
|
||||
AutoComplete(JsonToken.Float);
|
||||
InternalWriteValue(JsonToken.Float);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -827,8 +831,7 @@ namespace Newtonsoft.Json
|
||||
/// <param name="value">The <see cref="Double"/> value to write.</param>
|
||||
public virtual void WriteValue(double value)
|
||||
{
|
||||
UpdateScopeWithFinishedValue();
|
||||
AutoComplete(JsonToken.Float);
|
||||
InternalWriteValue(JsonToken.Float);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -837,8 +840,7 @@ namespace Newtonsoft.Json
|
||||
/// <param name="value">The <see cref="Boolean"/> value to write.</param>
|
||||
public virtual void WriteValue(bool value)
|
||||
{
|
||||
UpdateScopeWithFinishedValue();
|
||||
AutoComplete(JsonToken.Boolean);
|
||||
InternalWriteValue(JsonToken.Boolean);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -847,8 +849,7 @@ namespace Newtonsoft.Json
|
||||
/// <param name="value">The <see cref="Int16"/> value to write.</param>
|
||||
public virtual void WriteValue(short value)
|
||||
{
|
||||
UpdateScopeWithFinishedValue();
|
||||
AutoComplete(JsonToken.Integer);
|
||||
InternalWriteValue(JsonToken.Integer);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -858,8 +859,7 @@ namespace Newtonsoft.Json
|
||||
[CLSCompliant(false)]
|
||||
public virtual void WriteValue(ushort value)
|
||||
{
|
||||
UpdateScopeWithFinishedValue();
|
||||
AutoComplete(JsonToken.Integer);
|
||||
InternalWriteValue(JsonToken.Integer);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -868,8 +868,7 @@ namespace Newtonsoft.Json
|
||||
/// <param name="value">The <see cref="Char"/> value to write.</param>
|
||||
public virtual void WriteValue(char value)
|
||||
{
|
||||
UpdateScopeWithFinishedValue();
|
||||
AutoComplete(JsonToken.String);
|
||||
InternalWriteValue(JsonToken.String);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -878,8 +877,7 @@ namespace Newtonsoft.Json
|
||||
/// <param name="value">The <see cref="Byte"/> value to write.</param>
|
||||
public virtual void WriteValue(byte value)
|
||||
{
|
||||
UpdateScopeWithFinishedValue();
|
||||
AutoComplete(JsonToken.Integer);
|
||||
InternalWriteValue(JsonToken.Integer);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -889,8 +887,7 @@ namespace Newtonsoft.Json
|
||||
[CLSCompliant(false)]
|
||||
public virtual void WriteValue(sbyte value)
|
||||
{
|
||||
UpdateScopeWithFinishedValue();
|
||||
AutoComplete(JsonToken.Integer);
|
||||
InternalWriteValue(JsonToken.Integer);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -899,8 +896,7 @@ namespace Newtonsoft.Json
|
||||
/// <param name="value">The <see cref="Decimal"/> value to write.</param>
|
||||
public virtual void WriteValue(decimal value)
|
||||
{
|
||||
UpdateScopeWithFinishedValue();
|
||||
AutoComplete(JsonToken.Float);
|
||||
InternalWriteValue(JsonToken.Float);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -909,8 +905,7 @@ namespace Newtonsoft.Json
|
||||
/// <param name="value">The <see cref="DateTime"/> value to write.</param>
|
||||
public virtual void WriteValue(DateTime value)
|
||||
{
|
||||
UpdateScopeWithFinishedValue();
|
||||
AutoComplete(JsonToken.Date);
|
||||
InternalWriteValue(JsonToken.Date);
|
||||
}
|
||||
|
||||
#if !PocketPC && !NET20
|
||||
@@ -920,8 +915,7 @@ namespace Newtonsoft.Json
|
||||
/// <param name="value">The <see cref="DateTimeOffset"/> value to write.</param>
|
||||
public virtual void WriteValue(DateTimeOffset value)
|
||||
{
|
||||
UpdateScopeWithFinishedValue();
|
||||
AutoComplete(JsonToken.Date);
|
||||
InternalWriteValue(JsonToken.Date);
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -931,8 +925,7 @@ namespace Newtonsoft.Json
|
||||
/// <param name="value">The <see cref="Guid"/> value to write.</param>
|
||||
public virtual void WriteValue(Guid value)
|
||||
{
|
||||
UpdateScopeWithFinishedValue();
|
||||
AutoComplete(JsonToken.String);
|
||||
InternalWriteValue(JsonToken.String);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -941,8 +934,7 @@ namespace Newtonsoft.Json
|
||||
/// <param name="value">The <see cref="TimeSpan"/> value to write.</param>
|
||||
public virtual void WriteValue(TimeSpan value)
|
||||
{
|
||||
UpdateScopeWithFinishedValue();
|
||||
AutoComplete(JsonToken.String);
|
||||
InternalWriteValue(JsonToken.String);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -1162,14 +1154,9 @@ namespace Newtonsoft.Json
|
||||
public virtual void WriteValue(byte[] value)
|
||||
{
|
||||
if (value == null)
|
||||
{
|
||||
WriteNull();
|
||||
}
|
||||
else
|
||||
{
|
||||
UpdateScopeWithFinishedValue();
|
||||
AutoComplete(JsonToken.Bytes);
|
||||
}
|
||||
InternalWriteValue(JsonToken.Bytes);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -1179,14 +1166,9 @@ namespace Newtonsoft.Json
|
||||
public virtual void WriteValue(Uri value)
|
||||
{
|
||||
if (value == null)
|
||||
{
|
||||
WriteNull();
|
||||
}
|
||||
else
|
||||
{
|
||||
UpdateScopeWithFinishedValue();
|
||||
AutoComplete(JsonToken.String);
|
||||
}
|
||||
InternalWriteValue(JsonToken.String);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -1297,7 +1279,11 @@ namespace Newtonsoft.Json
|
||||
/// <param name="text">Text to place inside the comment.</param>
|
||||
public virtual void WriteComment(string text)
|
||||
{
|
||||
UpdateScopeWithFinishedValue();
|
||||
InternalWriteComment();
|
||||
}
|
||||
|
||||
internal void InternalWriteComment()
|
||||
{
|
||||
AutoComplete(JsonToken.Comment);
|
||||
}
|
||||
|
||||
@@ -1306,6 +1292,11 @@ namespace Newtonsoft.Json
|
||||
/// </summary>
|
||||
/// <param name="ws">The string of white space characters.</param>
|
||||
public virtual void WriteWhitespace(string ws)
|
||||
{
|
||||
InternalWriteWhitespace(ws);
|
||||
}
|
||||
|
||||
internal void InternalWriteWhitespace(string ws)
|
||||
{
|
||||
if (ws != null)
|
||||
{
|
||||
@@ -1314,7 +1305,6 @@ namespace Newtonsoft.Json
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void IDisposable.Dispose()
|
||||
{
|
||||
Dispose(true);
|
||||
|
||||
@@ -90,7 +90,7 @@ using System.Security;
|
||||
// by using the '*' as shown below:
|
||||
[assembly: AssemblyVersion("4.5.0.0")]
|
||||
#if !PocketPC
|
||||
[assembly: AssemblyFileVersion("4.5.10.15431")]
|
||||
[assembly: AssemblyFileVersion("4.5.10.15501")]
|
||||
#endif
|
||||
|
||||
[assembly: CLSCompliant(true)]
|
||||
|
||||
Reference in New Issue
Block a user