<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://james.newtonking.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>James Newton-King : Project, Json.NET</title><link>http://james.newtonking.com/archive/tags/Project/Json.NET/default.aspx</link><description>Tags: Project, Json.NET</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP1 (Build: 31106.3070)</generator><item><title>Json.NET 5.0 Release 5 – DefaultSettings and Extension Data</title><link>http://james.newtonking.com/archive/2013/05/08/json-net-5-0-release-5-defaultsettings-and-extension-data.aspx</link><pubDate>Wed, 08 May 2013 09:56:05 GMT</pubDate><guid isPermaLink="false">bce7ef4a-1ab4-4a64-ae34-bb54d1362c7e:57415</guid><dc:creator>James Newton-King</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;strong&gt;DefaultSettings&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;If you have used Json.NET then you will be familiar with JsonSerializerSettings. This class has been an extremely successful at providing an simple way for developers to customize Json.NET.&lt;/p&gt;  &lt;p&gt;With Json.NET’s increasing popularity and its use by more third party frameworks, a problem I have noticed is a developer has to customize serializer settings in multiple places. If you want your HtmlHelper.ToJson extension method, Web API services and SignalR to serialize JSON the same way across an application then you have to manually share a JsonSerializerSettings instance between them and figure out how each different framework allows you to customize Json.NET.&lt;/p&gt;  &lt;p&gt;The solution I have come up with is to add global default settings. Set once with JsonConvert.DefaultSettings in an application, the default settings will automatically be used by all calls to JsonConvert.SerializeObject/DeserializeObject, and JToken.ToObject/FromObject. Any user supplied settings to these calls will override the default settings.&lt;/p&gt;  &lt;div class="overflowpanel"&gt;   &lt;div class="code"&gt;     &lt;div style="font-size:10pt;font-family:courier new;color:black;"&gt;       &lt;pre style="margin:0px;"&gt;&lt;span style="color:green;"&gt;// settings will automatically be used by JsonConvert.SerializeObject/DeserializeObject&lt;/span&gt;&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&lt;span style="color:#2b91af;"&gt;JsonConvert&lt;/span&gt;.DefaultSettings = () =&amp;gt; &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;JsonSerializerSettings&lt;/span&gt;&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&amp;#160; {&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; Formatting = &lt;span style="color:#2b91af;"&gt;Formatting&lt;/span&gt;.Indented,&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; ContractResolver = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;CamelCasePropertyNamesContractResolver&lt;/span&gt;()&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&amp;#160; };&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&amp;#160;&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&lt;span style="color:#2b91af;"&gt;Employee&lt;/span&gt; e = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Employee&lt;/span&gt;&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&amp;#160; {&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; FirstName = &lt;span style="color:#a31515;"&gt;&amp;quot;Eric&amp;quot;&lt;/span&gt;,&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; LastName = &lt;span style="color:#a31515;"&gt;&amp;quot;Example&amp;quot;&lt;/span&gt;,&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; BirthDate = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;DateTime&lt;/span&gt;(1980, 4, 20, 0, 0, 0, &lt;span style="color:#2b91af;"&gt;DateTimeKind&lt;/span&gt;.Utc),&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; Department = &lt;span style="color:#a31515;"&gt;&amp;quot;IT&amp;quot;&lt;/span&gt;,&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; JobTitle = &lt;span style="color:#a31515;"&gt;&amp;quot;Web Dude&amp;quot;&lt;/span&gt;&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&amp;#160; };&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&amp;#160;&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;string&lt;/span&gt; json = &lt;span style="color:#2b91af;"&gt;JsonConvert&lt;/span&gt;.SerializeObject(e);&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&lt;span style="color:green;"&gt;// {&lt;/span&gt;&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&lt;span style="color:green;"&gt;//&amp;#160;&amp;#160; &amp;quot;firstName&amp;quot;: &amp;quot;Eric&amp;quot;,&lt;/span&gt;&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&lt;span style="color:green;"&gt;//&amp;#160;&amp;#160; &amp;quot;lastName&amp;quot;: &amp;quot;Example&amp;quot;,&lt;/span&gt;&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&lt;span style="color:green;"&gt;//&amp;#160;&amp;#160; &amp;quot;birthDate&amp;quot;: &amp;quot;1980-04-20T00:00:00Z&amp;quot;,&lt;/span&gt;&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&lt;span style="color:green;"&gt;//&amp;#160;&amp;#160; &amp;quot;department&amp;quot;: &amp;quot;IT&amp;quot;,&lt;/span&gt;&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&lt;span style="color:green;"&gt;//&amp;#160;&amp;#160; &amp;quot;jobTitle&amp;quot;: &amp;quot;Web Dude&amp;quot;&lt;/span&gt;&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&lt;span style="color:green;"&gt;// }&lt;/span&gt;&lt;/pre&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Because there are cases where JSON should not be customized, e.g. a Facebook or Twitter library, by default JsonSerializer won’t use DefaultSettings, providing an opt-out for those frameworks or for places in your application that shouldn’t use default settings. To create a JsonSerializer that does use them there is a new JsonSerializer.CreateDefault() method.&lt;/p&gt;

&lt;p&gt;In the short term there will be some third party libraries that don’t use default settings that should, and some third party libraries that do use default settings that shouldn’t. If you encounter a situation where DefaultSettings doesn’t work for you then continue to customize Json.NET settings like you do today.&lt;/p&gt;

&lt;p&gt;In the long term DefaultSettings will hopefully provide a simple, standard way to developers to customize JSON in .NET applications.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Extension Data&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The second new feature in Json.NET 5.0 Release 5 is &lt;strike&gt;copied&lt;/strike&gt; inspired by WCF’s &lt;a href="http://msdn.microsoft.com/en-us/library/system.runtime.serialization.iextensibledataobject.aspx" target="_blank"&gt;IExtensibleDataObject&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Extension data is a JSON object’s values that aren’t matched to a .NET property during deserialization. By placing the JsonExtensionDataAttribute on a dictionary all unused values are automatically added to that dictionary and are accessible by you.&lt;/p&gt;

&lt;div class="overflowpanel"&gt;
  &lt;div class="code"&gt;
    &lt;div style="font-size:10pt;font-family:courier new;color:black;"&gt;
      &lt;pre style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;DirectoryAccount&lt;/span&gt;&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;{&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&amp;#160; &lt;span style="color:green;"&gt;// normal deserialization&lt;/span&gt;&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&amp;#160; &lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;string&lt;/span&gt; DisplayName { &lt;span style="color:blue;"&gt;get&lt;/span&gt;; &lt;span style="color:blue;"&gt;set&lt;/span&gt;; }&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&amp;#160;&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&amp;#160; &lt;span style="color:green;"&gt;// these properties are set in OnDeserialized&lt;/span&gt;&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&amp;#160; &lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;string&lt;/span&gt; UserName { &lt;span style="color:blue;"&gt;get&lt;/span&gt;; &lt;span style="color:blue;"&gt;set&lt;/span&gt;; }&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&amp;#160; &lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;string&lt;/span&gt; Domain { &lt;span style="color:blue;"&gt;get&lt;/span&gt;; &lt;span style="color:blue;"&gt;set&lt;/span&gt;; }&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&amp;#160;&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&amp;#160; [&lt;span style="color:#2b91af;"&gt;JsonExtensionData&lt;/span&gt;]&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&amp;#160; &lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;IDictionary&lt;/span&gt;&amp;lt;&lt;span style="color:blue;"&gt;string&lt;/span&gt;, &lt;span style="color:#2b91af;"&gt;JToken&lt;/span&gt;&amp;gt; _additionalData;&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&amp;#160;&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&amp;#160; [&lt;span style="color:#2b91af;"&gt;OnDeserialized&lt;/span&gt;]&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&amp;#160; &lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; OnDeserialized(&lt;span style="color:#2b91af;"&gt;StreamingContext&lt;/span&gt; context)&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&amp;#160; {&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:green;"&gt;// SAMAccountName is not deserialized to any property&lt;/span&gt;&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:green;"&gt;// and so it is added to the extension data dictionary&lt;/span&gt;&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;string&lt;/span&gt; samAccountName = (&lt;span style="color:blue;"&gt;string&lt;/span&gt;)_additionalData[&lt;span style="color:#a31515;"&gt;&amp;quot;SAMAccountName&amp;quot;&lt;/span&gt;];&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&amp;#160;&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; Domain = samAccountName.Split(&lt;span style="color:#a31515;"&gt;&amp;#39;\\&amp;#39;&lt;/span&gt;)[0];&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; UserName = samAccountName.Split(&lt;span style="color:#a31515;"&gt;&amp;#39;\\&amp;#39;&lt;/span&gt;)[1];&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&amp;#160; }&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;}&lt;/pre&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Changes&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here is a complete list of what has changed since Json.NET 5.0 Release 4.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;New feature – Added global default serialization settings with JsonConvert.DefaultSettings&lt;/li&gt;

  &lt;li&gt;New feature – Added extension data support with JsonExtensionDataAttribute&lt;/li&gt;

  &lt;li&gt;New feature – Added NullValueHandling and DefaultValueHandling support to serializing dynamic types&lt;/li&gt;

  &lt;li&gt;Change – Changed some explicit interface methods on JArray to public to support use with ImpromtuInterface&lt;/li&gt;

  &lt;li&gt;Fix – Fixed deserializing non-ISO formatted date dictionary keys&lt;/li&gt;

  &lt;li&gt;Fix – Fixed values not being set when deserializing with DefaultValueHandling.IgnoreAndPopulate&lt;/li&gt;

  &lt;li&gt;Fix – Fixed deserializing with type named handling and assemblies loaded with Assembly.LoadFrom&lt;/li&gt;

  &lt;li&gt;Fix - Fixed deserializing Regexes when using StringEnumConverter&lt;/li&gt;

  &lt;li&gt;Fix – Fixed serializing and deserializing typed DataSets&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Links&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://json.codeplex.com/"&gt;&lt;strong&gt;Json.NET CodePlex Project&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://json.codeplex.com/releases/view/106328"&gt;Json.NET 5.0 Release 5 Download&lt;/a&gt;&lt;/strong&gt; – Json.NET source code and assemblies&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://james.newtonking.com/aggbug.aspx?PostID=57415" width="1" height="1"&gt;</description><category domain="http://james.newtonking.com/archive/tags/.NET/default.aspx">.NET</category><category domain="http://james.newtonking.com/archive/tags/Json.NET/default.aspx">Json.NET</category><category domain="http://james.newtonking.com/archive/tags/Project/default.aspx">Project</category></item><item><title>Json.NET 5.0 Release 4 – Performance</title><link>http://james.newtonking.com/archive/2013/04/25/json-net-5-0-release-4-performance.aspx</link><pubDate>Thu, 25 Apr 2013 08:24:18 GMT</pubDate><guid isPermaLink="false">bce7ef4a-1ab4-4a64-ae34-bb54d1362c7e:57414</guid><dc:creator>James Newton-King</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;This release of Json.NET ships with many performance improvements, and is over 30% faster serializing and deserializing JSON compared to Json.NET 4.5.&lt;/p&gt;  &lt;p&gt;&lt;img title="Smithers, release the hounds." style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="Smithers, release the hounds." src="http://james.newtonking.com/images/jsonnet50performance.png" width="661" height="356" /&gt;&lt;/p&gt;  &lt;p&gt;Json.NET extends its performance lead over DataContractJsonSerializer and continues to be significantly faster than JavaScriptSerializer which is used by ASP.NET MVC.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Compiled Expressions on Windows 8 and Windows Phone 8&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;An additional performance improvement specific to Windows 8 and Windows Phone 8 is the switch from the serializer internally using latebound reflection to compiled expressions. In exchange for a small one off cost the first time a type is serialized, compiled expressions are considerably faster than latebound reflection and provide an additional speed boost to Json.NET on Win8 and WP8.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Changes&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Here is a complete list of what has changed since Json.NET 5.0 Release 1.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;New feature - Added JsonWriter.SetWriteState to support inheritance from JsonWriter implementations &lt;/li&gt;    &lt;li&gt;Change - Changed .NET 4.5 portable library and WinRT library to use compiled expressions reflection &lt;/li&gt;    &lt;li&gt;Fix - Fixed error serializing non-generic types that implement IEnumerable&amp;lt;T&amp;gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Links&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://json.codeplex.com/"&gt;&lt;strong&gt;Json.NET CodePlex Project&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;a href="https://json.codeplex.com/releases/view/105633"&gt;Json.NET 5.0 Release 4 Download&lt;/a&gt;&lt;/strong&gt; – Json.NET source code and assemblies&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://james.newtonking.com/aggbug.aspx?PostID=57414" width="1" height="1"&gt;</description><category domain="http://james.newtonking.com/archive/tags/.NET/default.aspx">.NET</category><category domain="http://james.newtonking.com/archive/tags/Json.NET/default.aspx">Json.NET</category><category domain="http://james.newtonking.com/archive/tags/Project/default.aspx">Project</category></item><item><title>Json.NET 5.0 Release 1 – .NET 4.5, BigInteger, Read-Only Collections</title><link>http://james.newtonking.com/archive/2013/04/07/json-net-5-0-release-1-net-4-5-biginteger-read-only-collections.aspx</link><pubDate>Sun, 07 Apr 2013 07:13:00 GMT</pubDate><guid isPermaLink="false">bce7ef4a-1ab4-4a64-ae34-bb54d1362c7e:57413</guid><dc:creator>James Newton-King</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;strong&gt;New and Updated Libraries&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In Json.NET 5.0 there are a bunch of library version changes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Added .NET 4.5 library&lt;/li&gt;
&lt;li&gt;Added portable library targeting .NET 4.5 + WP8 + Win8&lt;/li&gt;
&lt;li&gt;Removed the Silverlight library&lt;a href="http://www.youtube.com/watch?v=r0yXqU-w9U0" target="_blank"&gt;.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Removed the Windows Phone library&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Upgrading library versions allows Json.NET to support new .NET features such as dynamic and async across more platforms.&lt;/p&gt;
&lt;p&gt;A baseline portable class library still supports all platforms (.NET 4 + WP7 + SL5 + Win8) so have no fear &amp;nbsp;Silverlight and Windows Phone developers, even though the dedicated libraries have been removed you can continue use the latest version of Json.NET on Silverlight/Windows Phone with a portable class library.&lt;/p&gt;
&lt;p&gt;Note that the assembly version number of Json.NET 5.0 hasn&amp;#39;t changed and is still 4.5.0.0 to avoid assembly redirect issues. Read more about assembly version numbers &lt;a href="http://james.newtonking.com/archive/2012/04/04/json-net-strong-naming-and-assembly-version-numbers.aspx" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Serializing NaN and Infinity Floating Point Values&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Json.NET no longer serializes NaN and positive and negative infinity floating point values as symbols, which is invalid JSON. With 5.0 the new default is to serialize those values as strings, e.g. &amp;quot;NaN&amp;quot; instead of NaN. There is no change to serializing normal floating point numbers.&lt;/p&gt;
&lt;p&gt;A FloatFormatHandling setting has been added so you can control how NaN and infinity values are serialized.&lt;/p&gt;
&lt;div class="overflowpanel"&gt;
&lt;div class="code"&gt;
&lt;div style="font-size:10pt;font-family:courier new;color:black;"&gt;
&lt;pre style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;string&lt;/span&gt; json;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&lt;span style="color:#2b91af;"&gt;IList&lt;/span&gt;&amp;lt;&lt;span style="color:blue;"&gt;double&lt;/span&gt;&amp;gt; d = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:blue;"&gt;double&lt;/span&gt;&amp;gt; {1.1, &lt;span style="color:blue;"&gt;double&lt;/span&gt;.NaN, &lt;span style="color:blue;"&gt;double&lt;/span&gt;.PositiveInfinity};&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;json = &lt;span style="color:#2b91af;"&gt;JsonConvert&lt;/span&gt;.SerializeObject(d);&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&lt;span style="color:green;"&gt;// [1.1,&amp;quot;NaN&amp;quot;,&amp;quot;Infinity&amp;quot;]&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;json = &lt;span style="color:#2b91af;"&gt;JsonConvert&lt;/span&gt;.SerializeObject(d, &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;JsonSerializerSettings&lt;/span&gt; {FloatFormatHandling = &lt;span style="color:#2b91af;"&gt;FloatFormatHandling&lt;/span&gt;.Symbol});&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&lt;span style="color:green;"&gt;// [1.1,NaN,Infinity]&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;json = &lt;span style="color:#2b91af;"&gt;JsonConvert&lt;/span&gt;.SerializeObject(d, &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;JsonSerializerSettings&lt;/span&gt; {FloatFormatHandling = &lt;span style="color:#2b91af;"&gt;FloatFormatHandling&lt;/span&gt;.DefaultValue});&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&lt;span style="color:green;"&gt;// [1.1,0.0,0.0]&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;BigInteger and Read-Only Collections&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Json.NET 5.0 adds support for BigInteger. Now when reading and writing JSON there is no limit on the maximum size of integers Json.NET can handle.&lt;/p&gt;
&lt;p&gt;There is also support for read-only collection interfaces (IReadOnlyList&amp;lt;T&amp;gt; and IReadOnlyDictionary&amp;lt;TKey, TValue&amp;gt;) which were added in .NET 4.5. As long as there is an IEnumerable&amp;lt;T&amp;gt; constructor then Json.NET will deserialize to the read-only collection for you.&lt;/p&gt;
&lt;div class="overflowpanel"&gt;
&lt;div class="code"&gt;
&lt;div style="font-size:10pt;font-family:courier new;color:black;"&gt;
&lt;pre style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;string&lt;/span&gt; json = &lt;span style="color:#a31515;"&gt;@&amp;quot;[&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&lt;span style="color:#a31515;"&gt;&amp;nbsp; 9000000000000000000000000000000000000000000000001&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&lt;span style="color:#a31515;"&gt;]&amp;quot;&lt;/span&gt;;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;var&lt;/span&gt; l = &lt;span style="color:#2b91af;"&gt;JsonConvert&lt;/span&gt;.DeserializeObject&amp;lt;&lt;span style="color:#2b91af;"&gt;IReadOnlyList&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;BigInteger&lt;/span&gt;&amp;gt;&amp;gt;(json);&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&lt;span style="color:#2b91af;"&gt;BigInteger&lt;/span&gt; nineQuindecillionAndOne = l[0];&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&lt;span style="color:green;"&gt;// 9000000000000000000000000000000000000000000000001&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;p&gt;&lt;strong&gt;&lt;b&gt;Performance&lt;/b&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;There are many performance and memory improvements in Json.NET 5.0, especially when serializing and deserializing collections, and Json.NET in Windows 8 Store apps.&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Changes&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Here is a complete list of what has changed since Json.NET 4.5 Release 11.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;New feature - Added .NET 4.5 library &lt;/li&gt;
&lt;li&gt;New feature - Added portable library targeting .NET 4.5, Win8, WP8 &lt;/li&gt;
&lt;li&gt;New feature - Added Path to JToken &lt;/li&gt;
&lt;li&gt;New feature - Added BigInteger support &lt;/li&gt;
&lt;li&gt;New feature - Added IReadOnlyCollection&amp;lt;T&amp;gt; and IReadOnlyDictionary&amp;lt;TKey, TValue&amp;gt; support &lt;/li&gt;
&lt;li&gt;New feature - Added FloatFormatHandling to JsonWriter/JsonSerializer/JsonSerializerSettings &lt;/li&gt;
&lt;li&gt;New feature - Added DateFormatString to JsonWriter/JsonSerializer/JsonSerializerSettings &lt;/li&gt;
&lt;li&gt;New feature - Added support for multiple serialization events and use base type serialization events &lt;/li&gt;
&lt;li&gt;New feature - Added DeserializeAnonymousType overload with JsonSerializerSettings &lt;/li&gt;
&lt;li&gt;New feature - Added support for specifying root type when serializing JSON with TypeNameHandling.Auto &lt;/li&gt;
&lt;li&gt;New feature - Added support for creating lists and dictionaries with an IEnumerable&amp;lt;T&amp;gt; constructor &lt;/li&gt;
&lt;li&gt;New feature - Added IConvertible support to JValue &lt;/li&gt;
&lt;li&gt;New feature - Added support for serializing custom IConvertible values &lt;/li&gt;
&lt;li&gt;New feature - Added support for deserializing IList &lt;/li&gt;
&lt;li&gt;New feature - Added support for converting byte array JValues to Guid &lt;/li&gt;
&lt;li&gt;New feature - Added support for deserializing byte arrays to Guid &lt;/li&gt;
&lt;li&gt;Change - NaN and Infinity floating point values are serialized as strings by default &lt;/li&gt;
&lt;li&gt;Change - Minor breaking changes to JsonSchema type &lt;/li&gt;
&lt;li&gt;Change - Upgraded Windows Phone assembly to WP8 &lt;/li&gt;
&lt;li&gt;Change - DateTime IDictionary keys are now serialized in ISO date format &lt;/li&gt;
&lt;li&gt;Change - DataContractAttribute is no longer inherited to match DataConctractSerializer behavior &lt;/li&gt;
&lt;li&gt;Change - StringEnumConverter converts empty strings to null for nullable enums &lt;/li&gt;
&lt;li&gt;Change - Guids serialize to a binary UUID in BSON instead of a string &lt;/li&gt;
&lt;li&gt;Remove - Removed SL4 library &lt;/li&gt;
&lt;li&gt;Remove - Removed WP7 library&lt;/li&gt;
&lt;li&gt;Fix - Fixed JTokenWriter returning a null reference &lt;/li&gt;
&lt;li&gt;Fix - Fixed static fields to no longer be included with fields serialization &lt;/li&gt;
&lt;li&gt;Fix - Fixed recursively reading type wrapper objects when deserializing &lt;/li&gt;
&lt;li&gt;Fix - Fixed incorrect namespace when converting XML to JSON &lt;/li&gt;
&lt;li&gt;Fix - Fixed poor performance when serializing/deserialize dynamic objects &lt;/li&gt;
&lt;li&gt;Fix - Fixed StringEnumConverter to throw JsonSerializerException on error &lt;/li&gt;
&lt;li&gt;Fix - Fixed hidden properties not being serialized &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Links&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://json.codeplex.com/" target="_blank"&gt;&lt;strong&gt;Json.NET CodePlex Project&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://json.codeplex.com/releases/view/104679" target="_blank"&gt;&lt;strong&gt;Json.NET 5.0 Release 1 Download&lt;/strong&gt;&lt;/a&gt; &amp;ndash; Json.NET source code and assemblies&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://james.newtonking.com/aggbug.aspx?PostID=57413" width="1" height="1"&gt;</description><category domain="http://james.newtonking.com/archive/tags/.NET/default.aspx">.NET</category><category domain="http://james.newtonking.com/archive/tags/Json.NET/default.aspx">Json.NET</category><category domain="http://james.newtonking.com/archive/tags/Project/default.aspx">Project</category></item><item><title>Json.NET 4.5 Release 11 - Serialization Tracing</title><link>http://james.newtonking.com/archive/2012/11/20/json-net-4-5-release-11-serialization-tracing.aspx</link><pubDate>Tue, 20 Nov 2012 10:16:17 GMT</pubDate><guid isPermaLink="false">bce7ef4a-1ab4-4a64-ae34-bb54d1362c7e:57411</guid><dc:creator>James Newton-King</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;strong&gt;Serialization Tracing&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The major new feature this release is serialization tracing. Using the ITraceWriter interface you can log and debug what is happening inside the Json.NET serializer when serializing and deserializing JSON.&lt;/p&gt;  &lt;div class="overflowpanel"&gt;   &lt;div class="code"&gt;     &lt;div style="font-family:courier new;color:black;font-size:10pt;"&gt;       &lt;pre style="margin:0px;"&gt;&lt;span style="color:#2b91af;"&gt;Staff&lt;/span&gt; staff = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Staff&lt;/span&gt;();&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;staff.Name = &lt;span style="color:#a31515;"&gt;&amp;quot;Arnie Admin&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;staff.Roles = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:blue;"&gt;string&lt;/span&gt;&amp;gt; { &lt;span style="color:#a31515;"&gt;&amp;quot;Administrator&amp;quot;&lt;/span&gt; };&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;staff.StartDate = &lt;span style="color:#2b91af;"&gt;DateTime&lt;/span&gt;.Now;&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&amp;#160;&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&lt;span style="color:#2b91af;"&gt;ITraceWriter&lt;/span&gt; traceWriter = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;MemoryTraceWriter&lt;/span&gt;();&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&amp;#160;&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&lt;span style="color:#2b91af;"&gt;JsonConvert&lt;/span&gt;.SerializeObject(&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&amp;#160; staff,&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&amp;#160; &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;JsonSerializerSettings&lt;/span&gt; { TraceWriter = traceWriter, Converters = { &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;JavaScriptDateTimeConverter&lt;/span&gt;() } });&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&amp;#160;&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(traceWriter);&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&lt;span style="color:green;"&gt;// 2012-11-11T12:08:42.761 Info Started serializing Newtonsoft.Json.Tests.Serialization.Staff. Path &amp;#39;&amp;#39;.&lt;/span&gt;&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&lt;span style="color:green;"&gt;// 2012-11-11T12:08:42.785 Info Started serializing System.DateTime with converter Newtonsoft.Json.Converters.JavaScriptDateTimeConverter. Path &amp;#39;StartDate&amp;#39;.&lt;/span&gt;&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&lt;span style="color:green;"&gt;// 2012-11-11T12:08:42.791 Info Finished serializing System.DateTime with converter Newtonsoft.Json.Converters.JavaScriptDateTimeConverter. Path &amp;#39;StartDate&amp;#39;.&lt;/span&gt;&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&lt;span style="color:green;"&gt;// 2012-11-11T12:08:42.797 Info Started serializing System.Collections.Generic.List`1[System.String]. Path &amp;#39;Roles&amp;#39;.&lt;/span&gt;&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&lt;span style="color:green;"&gt;// 2012-11-11T12:08:42.798 Info Finished serializing System.Collections.Generic.List`1[System.String]. Path &amp;#39;Roles&amp;#39;.&lt;/span&gt;&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&lt;span style="color:green;"&gt;// 2012-11-11T12:08:42.799 Info Finished serializing Newtonsoft.Json.Tests.Serialization.Staff. Path &amp;#39;&amp;#39;.&lt;/span&gt;&lt;/pre&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Json.NET has two implementations of ITraceWriter: MemoryTraceWriter which keeps messages in memory for simple debugging like the example above, and DiagnosticsTraceWriter which writes messages to any System.Diagnostics.TraceListeners your application is using.&lt;/p&gt;

&lt;p&gt;To write messages using your existing logging framework implement a custom version of ITraceWriter.&lt;/p&gt;

&lt;p&gt;Read more about trace writing here: &lt;a href="http://james.newtonking.com/projects/json/help/html/SerializationTracing.htm" target="_blank"&gt;&lt;strong&gt;Debugging with Serialization Tracing&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;JSON String Escaping&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;By default Json.NET only escapes control characters like new line when serializing text. New in this release is the StringEscapeHandling property on JsonTextWriter. Using StringEscapeHandling you can choose to escape HTML characters (&amp;lt;, &amp;gt;, &amp;amp;, &amp;#39;, &amp;quot;) or escape all non-ASCII characters.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;JToken.ToObject Performance&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The LINQ to JSON JToken class has a ToObject method on it for converting the JSON token to a .NET type. In previous versions of Json.NET this method always used the JsonSerializer behind the scenes to do the conversion which was unnecessary for converting simple types like strings, numbers, booleans, dates, etc.&lt;/p&gt;

&lt;p&gt;Json.NET 4.5 Release 11 now checks whether the object being converted to is a simple type and if so it skips using the JsonSerializer. The end result is ToObject is now 400% faster for most types.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Changes&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here is a complete list of what has changed since Json.NET 4.5 Release 10.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;New feature - Added ITraceWriter, MemoryTraceWriter, DiagnosticsTraceWriter &lt;/li&gt;

  &lt;li&gt;New feature - Added StringEscapeHandling with options to escape HTML and non-ASCII characters &lt;/li&gt;

  &lt;li&gt;New feature - Added non-generic JToken.ToObject methods &lt;/li&gt;

  &lt;li&gt;New feature - Deserialize ISet&amp;lt;T&amp;gt; properties as HashSet&amp;lt;T&amp;gt; &lt;/li&gt;

  &lt;li&gt;New feature - Added implicit conversions for Uri, TimeSpan, Guid &lt;/li&gt;

  &lt;li&gt;New feature - Missing byte, char, Guid, TimeSpan and Uri explicit conversion operators added to JToken &lt;/li&gt;

  &lt;li&gt;New feature - Special case so Version type is correctly deserialized &lt;/li&gt;

  &lt;li&gt;Change - Silverlight and Windows Phone assemblies in NuGet are strong named again &lt;/li&gt;

  &lt;li&gt;Change - Improved CamelCasePropertyNamesContractResolver camel casing property names &lt;/li&gt;

  &lt;li&gt;Change – Explicit JValue conversions are more flexible when converting values &lt;/li&gt;

  &lt;li&gt;Fix - Fixed QuoteChar not being used when writing DateTimes, TimeSpans, Uris and Guids &lt;/li&gt;

  &lt;li&gt;Fix - Fixed JValue constructors for Uri, TimeSpan, Guid assigning incorrect JTokenType &lt;/li&gt;

  &lt;li&gt;Fix - Fixed ReferenceLoopHandling not being used when serializing ISerializable and dynamic values &lt;/li&gt;

  &lt;li&gt;Fix - Fixed potential null reference error when getting attributes &lt;/li&gt;

  &lt;li&gt;Fix - Fixed .NET 2.0 build incorrectly referencing DateTimeOffset &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Links&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="http://json.codeplex.com/" target="_blank"&gt;Json.NET CodePlex Project&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="http://json.codeplex.com/releases/view/97986" target="_blank"&gt;Json.NET 4.5 Release 11 Download&lt;/a&gt;&lt;/strong&gt; – Json.NET source code and assemblies&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://james.newtonking.com/aggbug.aspx?PostID=57411" width="1" height="1"&gt;</description><category domain="http://james.newtonking.com/archive/tags/.NET/default.aspx">.NET</category><category domain="http://james.newtonking.com/archive/tags/Json.NET/default.aspx">Json.NET</category><category domain="http://james.newtonking.com/archive/tags/Project/default.aspx">Project</category></item><item><title>Json.NET 4.5 Release 10 – Portable Class Library on NuGet</title><link>http://james.newtonking.com/archive/2012/10/07/json-net-4-5-release-10-portable-class-library-on-nuget.aspx</link><pubDate>Mon, 08 Oct 2012 06:18:41 GMT</pubDate><guid isPermaLink="false">bce7ef4a-1ab4-4a64-ae34-bb54d1362c7e:57404</guid><dc:creator>James Newton-King</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;a href="http://james.newtonking.com/projects/json-net.aspx" target="_blank"&gt;Json.NET&amp;#39;s&lt;/a&gt; major new feature this release is the portable class library assembly is available over NuGet. This is made possible by NuGet 2.1 supporting portable class libraries. Read more about NuGet 2.1 &lt;a href="http://docs.nuget.org/docs/release-notes/nuget-2.1" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Case insensitive JObject GetValue and TryGetValue&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;To simplify getting property values without worrying about the property name&amp;#39;s case a couple of helper methods have been added to JObject. GetValue and TryGetValue will first attempt to get a property value with the exact case after which it will ignore case and the first matching property will be returned.&lt;/p&gt;  &lt;div class="overflowpanel"&gt;   &lt;div class="code"&gt;     &lt;div style="font-family:courier new;color:black;font-size:10pt;"&gt;       &lt;pre style="margin:0px;"&gt;&lt;span style="color:#2b91af;"&gt;JObject&lt;/span&gt; o = &lt;span style="color:#2b91af;"&gt;JObject&lt;/span&gt;.Parse(&lt;span style="color:#a31515;"&gt;@&amp;quot;{&lt;/span&gt;&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&lt;span style="color:#a31515;"&gt;&amp;#160; &amp;#39;name&amp;#39;: &amp;#39;Lower&amp;#39;,&lt;/span&gt;&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&lt;span style="color:#a31515;"&gt;&amp;#160; &amp;#39;NAME&amp;#39;: &amp;#39;Upper&amp;#39;&lt;/span&gt;&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&lt;span style="color:#a31515;"&gt;}&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&amp;#160;&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;string&lt;/span&gt; exactMatch = (&lt;span style="color:blue;"&gt;string&lt;/span&gt;)o.GetValue(&lt;span style="color:#a31515;"&gt;&amp;quot;NAME&amp;quot;&lt;/span&gt;, &lt;span style="color:#2b91af;"&gt;StringComparison&lt;/span&gt;.OrdinalIgnoreCase);&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&lt;span style="color:green;"&gt;// Upper&lt;/span&gt;&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&amp;#160;&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;string&lt;/span&gt; ignoreCase = (&lt;span style="color:blue;"&gt;string&lt;/span&gt;)o.GetValue(&lt;span style="color:#a31515;"&gt;&amp;quot;Name&amp;quot;&lt;/span&gt;, &lt;span style="color:#2b91af;"&gt;StringComparison&lt;/span&gt;.OrdinalIgnoreCase);&lt;/pre&gt;

      &lt;pre style="margin:0px;"&gt;&lt;span style="color:green;"&gt;// Lower&lt;/span&gt;&lt;/pre&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;In this example the first call to GetValue with &amp;quot;NAME&amp;quot; exactly matches the second property. The second call to GetValue with &amp;quot;Name&amp;quot; doesn’t exactly match any of the properties so a case insensitive search is made and the first property is returned.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Changes&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here is a complete list of what has changed since Json.NET 4.5 Release 9.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;New feature - Added Portable build to NuGet package &lt;/li&gt;

  &lt;li&gt;New feature - Added GetValue and TryGetValue with StringComparison to JObject &lt;/li&gt;

  &lt;li&gt;Change - Improved duplicate object reference id error message &lt;/li&gt;

  &lt;li&gt;Fix - Fixed error when comparing empty JObjects &lt;/li&gt;

  &lt;li&gt;Fix - Fixed SecAnnotate warnings &lt;/li&gt;

  &lt;li&gt;Fix - Fixed error when comparing DateTime JValue with a DateTimeOffset JValue &lt;/li&gt;

  &lt;li&gt;Fix - Fixed serializer sometimes not using DateParseHandling setting &lt;/li&gt;

  &lt;li&gt;Fix - Fixed error in JsonWriter.WriteToken when writing a DateTimeOffset &lt;/li&gt;

  &lt;li&gt;Fix - Fixed error when serializing emitted classes that have null constructor parameter names &lt;/li&gt;

  &lt;li&gt;Fix - Fixed empty strings not correctly deserializing as null onto nullable properties &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Links&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="http://json.codeplex.com/" target="_blank"&gt;Json.NET CodePlex Project&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="http://json.codeplex.com/releases/view/95877" target="_blank"&gt;Json.NET 4.5 Release 10 Download&lt;/a&gt;&lt;/strong&gt; – Json.NET source code and assemblies&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://james.newtonking.com/aggbug.aspx?PostID=57404" width="1" height="1"&gt;</description><category domain="http://james.newtonking.com/archive/tags/.NET/default.aspx">.NET</category><category domain="http://james.newtonking.com/archive/tags/Json.NET/default.aspx">Json.NET</category><category domain="http://james.newtonking.com/archive/tags/Project/default.aspx">Project</category></item></channel></rss>