-Added .NET 2.0 support
-Documentation
This commit is contained in:
@@ -17,13 +17,20 @@
|
||||
<h3>
|
||||
Features</h3>
|
||||
<ul>
|
||||
<li>LINQ to JSON</li>
|
||||
<li>The JsonSerializer for quickly converting your .NET objects to JSON and back again</li>
|
||||
<li>Json.NET can optionally produce well formatted, indented JSON for debugging or display</li>
|
||||
<li>Attributes like JsonIgnore and JsonProperty can be added to a class to customize
|
||||
how a class is serialized</li>
|
||||
<li>Flexible JSON serializer to convert .NET objects to JSON and back again</li>
|
||||
<li>LINQ to JSON for reading and writing JSON</li>
|
||||
<li>Writes indented, easy to read JSON</li>
|
||||
<li>Convert JSON to and from XML</li>
|
||||
<li>Supports Silverlight and the Compact Framework</li>
|
||||
</ul>
|
||||
<p>The JSON serializer is a good choice when the JSON you are reading or writing maps closely
|
||||
to a .NET class. The serializer automatically reads and writes JSON for the class.</p>
|
||||
<p class="MsoNormal">
|
||||
For situations where you are only interested in getting values from JSON, don't
|
||||
have a class to serialize or deserialize to, or the JSON is radically different
|
||||
from your class and you need to manually read and write from your objects then
|
||||
LINQ to JSON is what you should use. LINQ to JSON allows you to easily read,
|
||||
create and modify JSON in .NET.</p>
|
||||
<h3>
|
||||
History</h3>
|
||||
<p>
|
||||
|
||||
@@ -0,0 +1,128 @@
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<title>Serializing Collections</title>
|
||||
<link href="styles.css" rel="stylesheet" type="text/css" />
|
||||
<link href="custom.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div id="control">
|
||||
<span class="productTitle">Json.NET - Quick Starts & API Documentation</span><br />
|
||||
<span class="topicTitle">Serializing Collections</span></div>
|
||||
|
||||
<div id="content">
|
||||
<span style="color: DarkGray"> </span>
|
||||
|
||||
<p>The <a href="./html/T_Newtonsoft_Json_JsonSerializer.htm">JsonSerializer</a> has
|
||||
great support for serializing and deserializing collections of objects.</p>
|
||||
|
||||
<h3>Serializing</h3>
|
||||
<p>To serialize a collection - a generic list, array, dictionary, or your own custom collection - simply call the serializer with the object you want to get JSON for.
|
||||
Json.NET will serialize the collection and all of the values it contains.</p>
|
||||
|
||||
|
||||
<div class="overflowpanel"> <div class="code">
|
||||
|
||||
<div style="font-family: Courier New; font-size: 10pt; color: black;">
|
||||
<pre style="margin: 0px;"><span style="color: #2b91af;">Product</span> p1 = <span style="color: blue;">new</span> <span style="color: #2b91af;">Product</span></pre>
|
||||
<pre style="margin: 0px;"> {</pre>
|
||||
<pre style="margin: 0px;"> Name = <span style="color: #a31515;">"Product 1"</span>,</pre>
|
||||
<pre style="margin: 0px;"> Price = 99.95m,</pre>
|
||||
<pre style="margin: 0px;"> ExpiryDate = <span style="color: blue;">new</span> <span style="color: #2b91af;">DateTime</span>(2000, 12, 29, 0, 0, 0, <span style="color: #2b91af;">DateTimeKind</span>.Utc),</pre>
|
||||
<pre style="margin: 0px;"> };</pre>
|
||||
<pre style="margin: 0px;"><span style="color: #2b91af;">Product</span> p2 = <span style="color: blue;">new</span> <span style="color: #2b91af;">Product</span></pre>
|
||||
<pre style="margin: 0px;">{</pre>
|
||||
<pre style="margin: 0px;"> Name = <span style="color: #a31515;">"Product 2"</span>,</pre>
|
||||
<pre style="margin: 0px;"> Price = 12.50m,</pre>
|
||||
<pre style="margin: 0px;"> ExpiryDate = <span style="color: blue;">new</span> <span style="color: #2b91af;">DateTime</span>(2009, 7, 31, 0, 0, 0, <span style="color: #2b91af;">DateTimeKind</span>.Utc),</pre>
|
||||
<pre style="margin: 0px;">};</pre>
|
||||
<pre style="margin: 0px;"> </pre>
|
||||
<pre style="margin: 0px;"><span style="color: #2b91af;">List</span><<span style="color: #2b91af;">Product</span>> products = <span style="color: blue;">new</span> <span style="color: #2b91af;">List</span><<span style="color: #2b91af;">Product</span>>();</pre>
|
||||
<pre style="margin: 0px;">products.Add(p1);</pre>
|
||||
<pre style="margin: 0px;">products.Add(p2);</pre>
|
||||
<pre style="margin: 0px;"> </pre>
|
||||
<pre style="margin: 0px;"><span style="color: blue;">string</span> json = <span style="color: #2b91af;">JsonConvert</span>.SerializeObject(products, <span style="color: #2b91af;">Formatting</span>.Indented);</pre>
|
||||
<pre style="margin: 0px;"><span style="color: green;">//[</span></pre>
|
||||
<pre style="margin: 0px;"><span style="color: green;">// {</span></pre>
|
||||
<pre style="margin: 0px;"><span style="color: green;">// "Name": "Product 1",</span></pre>
|
||||
<pre style="margin: 0px;"><span style="color: green;">// "ExpiryDate": "\/Date(978048000000)\/",</span></pre>
|
||||
<pre style="margin: 0px;"><span style="color: green;">// "Price": 99.95,</span></pre>
|
||||
<pre style="margin: 0px;"><span style="color: green;">// "Sizes": null</span></pre>
|
||||
<pre style="margin: 0px;"><span style="color: green;">// },</span></pre>
|
||||
<pre style="margin: 0px;"><span style="color: green;">// {</span></pre>
|
||||
<pre style="margin: 0px;"><span style="color: green;">// "Name": "Product 2",</span></pre>
|
||||
<pre style="margin: 0px;"><span style="color: green;">// "ExpiryDate": "\/Date(1248998400000)\/",</span></pre>
|
||||
<pre style="margin: 0px;"><span style="color: green;">// "Price": 12.50,</span></pre>
|
||||
<pre style="margin: 0px;"><span style="color: green;">// "Sizes": null</span></pre>
|
||||
<pre style="margin: 0px;"><span style="color: green;">// }</span></pre>
|
||||
<pre style="margin: 0px;"><span style="color: green;">//]</span></pre>
|
||||
</div>
|
||||
|
||||
</div></div>
|
||||
|
||||
<h3>Deserializing</h3>
|
||||
<p>To deserialize JSON into a .NET collection just specify the collection type you want to deserialize to. Json.NET supports a wide range of collection types.</p>
|
||||
|
||||
<div class="overflowpanel"> <div class="code">
|
||||
|
||||
<div style="font-family: Courier New; font-size: 10pt; color: black;">
|
||||
<pre style="margin: 0px;"><span style="color: blue;">string</span> json = <span style="color: #a31515;">@"[</span></pre>
|
||||
<pre style="margin: 0px;"><span style="color: #a31515;"> {</span></pre>
|
||||
<pre style="margin: 0px;"><span style="color: #a31515;"> ""Name"": ""Product 1"",</span></pre>
|
||||
<pre style="margin: 0px;"><span style="color: #a31515;"> ""ExpiryDate"": ""\/Date(978048000000)\/"",</span></pre>
|
||||
<pre style="margin: 0px;"><span style="color: #a31515;"> ""Price"": 99.95,</span></pre>
|
||||
<pre style="margin: 0px;"><span style="color: #a31515;"> ""Sizes"": null</span></pre>
|
||||
<pre style="margin: 0px;"><span style="color: #a31515;"> },</span></pre>
|
||||
<pre style="margin: 0px;"><span style="color: #a31515;"> {</span></pre>
|
||||
<pre style="margin: 0px;"><span style="color: #a31515;"> ""Name"": ""Product 2"",</span></pre>
|
||||
<pre style="margin: 0px;"><span style="color: #a31515;"> ""ExpiryDate"": ""\/Date(1248998400000)\/"",</span></pre>
|
||||
<pre style="margin: 0px;"><span style="color: #a31515;"> ""Price"": 12.50,</span></pre>
|
||||
<pre style="margin: 0px;"><span style="color: #a31515;"> ""Sizes"": null</span></pre>
|
||||
<pre style="margin: 0px;"><span style="color: #a31515;"> }</span></pre>
|
||||
<pre style="margin: 0px;"><span style="color: #a31515;">]"</span>;</pre>
|
||||
<pre style="margin: 0px;"> </pre>
|
||||
<pre style="margin: 0px;"><span style="color: #2b91af;">List</span><<span style="color: #2b91af;">Product</span>> products = <span style="color: #2b91af;">JsonConvert</span>.DeserializeObject<<span style="color: #2b91af;">List</span><<span style="color: #2b91af;">Product</span>>>(json);</pre>
|
||||
<pre style="margin: 0px;"> </pre>
|
||||
<pre style="margin: 0px;"><span style="color: #2b91af;">Console</span>.WriteLine(products.Count);</pre>
|
||||
<pre style="margin: 0px;"><span style="color: green;">// 2</span></pre>
|
||||
<pre style="margin: 0px;"> </pre>
|
||||
<pre style="margin: 0px;"><span style="color: #2b91af;">Product</span> p1 = products[0];</pre>
|
||||
<pre style="margin: 0px;"> </pre>
|
||||
<pre style="margin: 0px;"><span style="color: #2b91af;">Console</span>.WriteLine(p1.Name);</pre>
|
||||
<pre style="margin: 0px;"><span style="color: green;">// Product 1</span></pre>
|
||||
</div>
|
||||
|
||||
</div></div>
|
||||
|
||||
<h3>Deserializing Dictionaries</h3>
|
||||
|
||||
<p>Using Json.NET you can also deserialize a JSON object into a .NET generic dictionary. The JSON object's property names and values will be added to the dictionary.</p>
|
||||
|
||||
<div class="overflowpanel"> <div class="code">
|
||||
|
||||
<div style="font-family: Courier New; font-size: 10pt; color: black;">
|
||||
<pre style="margin: 0px;"><span style="color: blue;">string</span> json = <span style="color: #a31515;">@"{""key1"":""value1"",""key2"":""value2""}"</span>;</pre>
|
||||
<pre style="margin: 0px;"> </pre>
|
||||
<pre style="margin: 0px;"><span style="color: #2b91af;">Dictionary</span><<span style="color: blue;">string</span>, <span style="color: blue;">string</span>> values = <span style="color: #2b91af;">JsonConvert</span>.DeserializeObject<<span style="color: #2b91af;">Dictionary</span><<span style="color: blue;">string</span>, <span style="color: blue;">string</span>>>(json);</pre>
|
||||
<pre style="margin: 0px;"> </pre>
|
||||
<pre style="margin: 0px;"><span style="color: #2b91af;">Console</span>.WriteLine(values.Count);</pre>
|
||||
<pre style="margin: 0px;"><span style="color: green;">// 2</span></pre>
|
||||
<pre style="margin: 0px;"> </pre>
|
||||
<pre style="margin: 0px;"><span style="color: #2b91af;">Console</span>.WriteLine(values[<span style="color: #a31515;">"key1"</span>]);</pre>
|
||||
<pre style="margin: 0px;"><span style="color: green;">// value1</span></pre>
|
||||
</div>
|
||||
|
||||
</div></div>
|
||||
|
||||
<div id="footer">
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -24,6 +24,7 @@
|
||||
<contentItem sourcePath=".\ContractResolver.html" destPath="" excludeItems="False" />
|
||||
<contentItem sourcePath=".\SerializationCallbacks.html" destPath="" excludeItems="False" />
|
||||
<contentItem sourcePath=".\SerializationAttributes.html" destPath="" excludeItems="False" />
|
||||
<contentItem sourcePath=".\SerializingCollections.html" destPath="" excludeItems="False" />
|
||||
</additionalContent>
|
||||
<ProjectSummary />
|
||||
<MissingTags>Summary, Parameter, Returns, AutoDocumentCtors, Namespace, TypeParameter</MissingTags>
|
||||
|
||||
+2
-1
@@ -3,7 +3,8 @@
|
||||
<siteMapNode title="Introduction" url=".\Introduction.html" isDefault="true" />
|
||||
<siteMapNode title="Serializing and deserializing JSON" url=".\SerializingJSON.html">
|
||||
<siteMapNode title="Customizing JSON serialization with attributes" url=".\SerializationAttributes.html" />
|
||||
<siteMapNode title="Serializing dates in JSON" url=".\DatesInJSON.html" />
|
||||
<siteMapNode title="Serializing Dates in JSON" url=".\DatesInJSON.html" />
|
||||
<siteMapNode title="Serializing Collections" url=".\SerializingCollections.html" />
|
||||
<siteMapNode title="Serialization Callbacks" url=".\SerializationCallbacks.html" />
|
||||
<siteMapNode title="Serialization and Preserving Object References" url=".\PreserveObjectReferences.html" />
|
||||
<siteMapNode title="CustomCreationConverter" url=".\CustomCreationConverter.html" />
|
||||
|
||||
Binary file not shown.
@@ -0,0 +1,33 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 10.00
|
||||
# Visual Studio 2008
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Lib", "Lib", "{620042D9-2753-48F5-BEDE-3905248781D2}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
Lib\LinqBridge.dll = Lib\LinqBridge.dll
|
||||
Lib\nunit.framework.dll = Lib\nunit.framework.dll
|
||||
Lib\nunit.framework.xml = Lib\nunit.framework.xml
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Newtonsoft.Json.Net20", "Newtonsoft.Json\Newtonsoft.Json.Net20.csproj", "{A9AE40FF-1A21-414A-9FE7-3BE13644CC6D}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Newtonsoft.Json.Tests.Net20", "Newtonsoft.Json.Tests\Newtonsoft.Json.Tests.Net20.csproj", "{3E6E2335-B079-4B5B-A65A-9D586914BCBB}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{A9AE40FF-1A21-414A-9FE7-3BE13644CC6D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{A9AE40FF-1A21-414A-9FE7-3BE13644CC6D}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{A9AE40FF-1A21-414A-9FE7-3BE13644CC6D}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{A9AE40FF-1A21-414A-9FE7-3BE13644CC6D}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{3E6E2335-B079-4B5B-A65A-9D586914BCBB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{3E6E2335-B079-4B5B-A65A-9D586914BCBB}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{3E6E2335-B079-4B5B-A65A-9D586914BCBB}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{3E6E2335-B079-4B5B-A65A-9D586914BCBB}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
@@ -1,6 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
#if !SILVERLIGHT && !PocketPC
|
||||
#if !SILVERLIGHT && !PocketPC && !NET20
|
||||
using System.Data.Linq;
|
||||
#endif
|
||||
#if !SILVERLIGHT
|
||||
@@ -24,7 +24,7 @@ namespace Newtonsoft.Json.Tests.Converters
|
||||
public byte[] NullByteArray { get; set; }
|
||||
}
|
||||
|
||||
#if !SILVERLIGHT && !PocketPC
|
||||
#if !SILVERLIGHT && !PocketPC && !NET20
|
||||
[Test]
|
||||
public void DeserializeBinaryClass()
|
||||
{
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
#if !SILVERLIGHT && !PocketPC
|
||||
#if !SILVERLIGHT && !PocketPC && !NET20
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
#endif
|
||||
using System.Text;
|
||||
@@ -39,7 +39,7 @@ using System.Collections.ObjectModel;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using System.Linq;
|
||||
using Newtonsoft.Json.Converters;
|
||||
#if !PocketPC
|
||||
#if !PocketPC && !NET20
|
||||
using System.Runtime.Serialization.Json;
|
||||
#endif
|
||||
using Newtonsoft.Json.Tests.TestObjects;
|
||||
@@ -473,7 +473,7 @@ keyword such as type of business.""
|
||||
Assert.AreEqual("Large", deserializedProductShort.Sizes[2]);
|
||||
}
|
||||
|
||||
#if !PocketPC
|
||||
#if !PocketPC && !NET20
|
||||
[Test]
|
||||
public void Unicode()
|
||||
{
|
||||
@@ -1542,7 +1542,7 @@ keyword such as type of business.""
|
||||
Assert.AreEqual("titleId", n.FidOrder[n.FidOrder.Count - 1]);
|
||||
}
|
||||
|
||||
#if !SILVERLIGHT && !PocketPC
|
||||
#if !SILVERLIGHT && !PocketPC && !NET20
|
||||
[MetadataType(typeof(OptInClassMetadata))]
|
||||
public class OptInClass
|
||||
{
|
||||
@@ -1587,7 +1587,7 @@ keyword such as type of business.""
|
||||
}
|
||||
#endif
|
||||
|
||||
#if !PocketPC
|
||||
#if !PocketPC && !NET20
|
||||
[DataContract]
|
||||
public class DataContractPrivateMembers
|
||||
{
|
||||
@@ -1938,5 +1938,107 @@ keyword such as type of business.""
|
||||
Assert.AreEqual(1, ((JObject)o.Data[2]).Count);
|
||||
Assert.AreEqual(1, (int)((JObject)o.Data[2])["one"]);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void DeserializeGenericDictionary()
|
||||
{
|
||||
string json = @"{""key1"":""value1"",""key2"":""value2""}";
|
||||
|
||||
Dictionary<string, string> values = JsonConvert.DeserializeObject<Dictionary<string, string>>(json);
|
||||
|
||||
Console.WriteLine(values.Count);
|
||||
// 2
|
||||
|
||||
Console.WriteLine(values["key1"]);
|
||||
// value1
|
||||
|
||||
Assert.AreEqual(2, values.Count);
|
||||
Assert.AreEqual("value1", values["key1"]);
|
||||
Assert.AreEqual("value2", values["key2"]);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void SerializeGenericList()
|
||||
{
|
||||
Product p1 = new Product
|
||||
{
|
||||
Name = "Product 1",
|
||||
Price = 99.95m,
|
||||
ExpiryDate = new DateTime(2000, 12, 29, 0, 0, 0, DateTimeKind.Utc),
|
||||
};
|
||||
Product p2 = new Product
|
||||
{
|
||||
Name = "Product 2",
|
||||
Price = 12.50m,
|
||||
ExpiryDate = new DateTime(2009, 7, 31, 0, 0, 0, DateTimeKind.Utc),
|
||||
};
|
||||
|
||||
List<Product> products = new List<Product>();
|
||||
products.Add(p1);
|
||||
products.Add(p2);
|
||||
|
||||
string json = JsonConvert.SerializeObject(products, Formatting.Indented);
|
||||
//[
|
||||
// {
|
||||
// "Name": "Product 1",
|
||||
// "ExpiryDate": "\/Date(978048000000)\/",
|
||||
// "Price": 99.95,
|
||||
// "Sizes": null
|
||||
// },
|
||||
// {
|
||||
// "Name": "Product 2",
|
||||
// "ExpiryDate": "\/Date(1248998400000)\/",
|
||||
// "Price": 12.50,
|
||||
// "Sizes": null
|
||||
// }
|
||||
//]
|
||||
|
||||
Assert.AreEqual(@"[
|
||||
{
|
||||
""Name"": ""Product 1"",
|
||||
""ExpiryDate"": ""\/Date(978048000000)\/"",
|
||||
""Price"": 99.95,
|
||||
""Sizes"": null
|
||||
},
|
||||
{
|
||||
""Name"": ""Product 2"",
|
||||
""ExpiryDate"": ""\/Date(1248998400000)\/"",
|
||||
""Price"": 12.50,
|
||||
""Sizes"": null
|
||||
}
|
||||
]", json);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void DeserializeGenericList()
|
||||
{
|
||||
string json = @"[
|
||||
{
|
||||
""Name"": ""Product 1"",
|
||||
""ExpiryDate"": ""\/Date(978048000000)\/"",
|
||||
""Price"": 99.95,
|
||||
""Sizes"": null
|
||||
},
|
||||
{
|
||||
""Name"": ""Product 2"",
|
||||
""ExpiryDate"": ""\/Date(1248998400000)\/"",
|
||||
""Price"": 12.50,
|
||||
""Sizes"": null
|
||||
}
|
||||
]";
|
||||
|
||||
List<Product> products = JsonConvert.DeserializeObject<List<Product>>(json);
|
||||
|
||||
Console.WriteLine(products.Count);
|
||||
// 2
|
||||
|
||||
Product p1 = products[0];
|
||||
|
||||
Console.WriteLine(p1.Name);
|
||||
// Product 1
|
||||
|
||||
Assert.AreEqual(2, products.Count);
|
||||
Assert.AreEqual("Product 1", products[0].Name);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -7,7 +7,7 @@
|
||||
<ProjectGuid>{32EA9694-4FB3-43E9-A6AD-050F1D35EA0A}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>Newtonsoft.Json.Tests.Compact</RootNamespace>
|
||||
<RootNamespace>Newtonsoft.Json.Tests</RootNamespace>
|
||||
<AssemblyName>Newtonsoft.Json.Tests.Compact</AssemblyName>
|
||||
<ProjectTypeGuids>{4D628B5B-2FBC-4AA6-8C16-197242AEB884};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
|
||||
<PlatformFamilyName>PocketPC</PlatformFamilyName>
|
||||
@@ -24,7 +24,7 @@
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE;$(PlatformFamilyName)</DefineConstants>
|
||||
<DefineConstants>TRACE;DEBUG;PocketPC</DefineConstants>
|
||||
<NoStdLib>true</NoStdLib>
|
||||
<NoConfig>true</NoConfig>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
|
||||
@@ -0,0 +1,176 @@
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>9.0.30729</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{3E6E2335-B079-4B5B-A65A-9D586914BCBB}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>Newtonsoft.Json.Tests</RootNamespace>
|
||||
<AssemblyName>Newtonsoft.Json.Tests.Net20</AssemblyName>
|
||||
<SccProjectName>
|
||||
</SccProjectName>
|
||||
<SccLocalPath>
|
||||
</SccLocalPath>
|
||||
<SccAuxPath>
|
||||
</SccAuxPath>
|
||||
<SccProvider>
|
||||
</SccProvider>
|
||||
<FileUpgradeFlags>
|
||||
</FileUpgradeFlags>
|
||||
<OldToolsVersion>2.0</OldToolsVersion>
|
||||
<UpgradeBackupLocation>
|
||||
</UpgradeBackupLocation>
|
||||
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
|
||||
<SignAssembly>false</SignAssembly>
|
||||
<AssemblyOriginatorKeyFile>
|
||||
</AssemblyOriginatorKeyFile>
|
||||
<TargetFrameworkSubset>
|
||||
</TargetFrameworkSubset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>TRACE;DEBUG;NET20</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="LinqBridge, Version=1.0.0.0, Culture=neutral, PublicKeyToken=c2b14eb747628076, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\Lib\LinqBridge.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="nunit.framework, Version=2.4.3.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\Lib\nunit.framework.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Security" />
|
||||
<Reference Include="System.Web" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Converters\BinaryConverterTests.cs" />
|
||||
<Compile Include="Converters\CustomCreationConverterTests.cs" />
|
||||
<Compile Include="Converters\StringEnumConverterTests.cs" />
|
||||
<Compile Include="JsonArrayAttributeTests.cs" />
|
||||
<Compile Include="ExceptionTests.cs" />
|
||||
<Compile Include="JsonValidatingReaderTests.cs" />
|
||||
<Compile Include="Serialization\EntitiesSerializationTests.cs" />
|
||||
<Compile Include="Serialization\PopulateTests.cs" />
|
||||
<Compile Include="Serialization\SerializationEventAttributeTests.cs" />
|
||||
<Compile Include="Schema\ExtensionsTests.cs" />
|
||||
<Compile Include="Schema\JsonSchemaModelBuilderTests.cs" />
|
||||
<Compile Include="Schema\JsonSchemaNodeTests.cs" />
|
||||
<Compile Include="Serialization\CamelCasePropertyNamesContractResolverTests.cs" />
|
||||
<Compile Include="Serialization\PreserveReferencesHandlingTests.cs" />
|
||||
<Compile Include="Serialization\TypeNameHandlingTests.cs" />
|
||||
<Compile Include="TestObjects\AbstractGenericBase.cs" />
|
||||
<Compile Include="TestObjects\ArgumentConverterPrecedenceClassConverter.cs" />
|
||||
<Compile Include="TestObjects\BadJsonPropertyClass.cs" />
|
||||
<Compile Include="TestObjects\CircularReferenceClass.cs" />
|
||||
<Compile Include="TestObjects\ClassAndMemberConverterClass.cs" />
|
||||
<Compile Include="TestObjects\ClassConverterPrecedenceClassConverter.cs" />
|
||||
<Compile Include="TestObjects\ConstructorCaseSensitivityClass.cs" />
|
||||
<Compile Include="TestObjects\ConverterPrecedenceClass.cs" />
|
||||
<Compile Include="TestObjects\ConverterPrecedenceClassConverter.cs" />
|
||||
<Compile Include="TestObjects\CircularReferenceWithIdClass.cs" />
|
||||
<Compile Include="TestObjects\EmployeeReference.cs" />
|
||||
<Compile Include="TestObjects\JsonPropertyWithHandlingValues.cs" />
|
||||
<Compile Include="TestObjects\DefaultValueAttributeTestClass.cs" />
|
||||
<Compile Include="TestObjects\DoubleClass.cs" />
|
||||
<Compile Include="TestObjects\GenericImpl.cs" />
|
||||
<Compile Include="TestObjects\GenericListAndDictionaryInterfaceProperties.cs" />
|
||||
<Compile Include="TestObjects\GetOnlyPropertyClass.cs" />
|
||||
<Compile Include="TestObjects\IncompatibleJsonAttributeClass.cs" />
|
||||
<Compile Include="TestObjects\Invoice.cs" />
|
||||
<Compile Include="TestObjects\JsonIgnoreAttributeTestClass.cs" />
|
||||
<Compile Include="TestObjects\MemberConverterPrecedenceClassConverter.cs" />
|
||||
<Compile Include="TestObjects\MethodExecutorObject.cs" />
|
||||
<Compile Include="TestObjects\JaggedArray.cs" />
|
||||
<Compile Include="TestObjects\MyClass.cs" />
|
||||
<Compile Include="TestObjects\Name.cs" />
|
||||
<Compile Include="TestObjects\PersonRaw.cs" />
|
||||
<Compile Include="TestObjects\PhoneNumber.cs" />
|
||||
<Compile Include="TestObjects\PrivateMembersClass.cs" />
|
||||
<Compile Include="TestObjects\RequiredMembersClass.cs" />
|
||||
<Compile Include="TestObjects\SerializationEventTestDictionary.cs" />
|
||||
<Compile Include="TestObjects\SerializationEventTestList.cs" />
|
||||
<Compile Include="TestObjects\SerializationEventTestObject.cs" />
|
||||
<Compile Include="TestObjects\SerializationEventTestObjectWithConstructor.cs" />
|
||||
<Compile Include="TestObjects\SetOnlyPropertyClass.cs" />
|
||||
<Compile Include="TestObjects\Article.cs" />
|
||||
<Compile Include="TestObjects\ArticleCollection.cs" />
|
||||
<Compile Include="TestObjects\ClassWithArray.cs" />
|
||||
<Compile Include="TestObjects\ClassWithGuid.cs" />
|
||||
<Compile Include="TestObjects\ConverableMembers.cs" />
|
||||
<Compile Include="TestObjects\JsonIgnoreAttributeOnClassTestClass.cs" />
|
||||
<Compile Include="Linq\JConstructorTests.cs" />
|
||||
<Compile Include="Linq\JPropertyTests.cs" />
|
||||
<Compile Include="TestObjects\MemberConverterClass.cs" />
|
||||
<Compile Include="TestObjects\Product.cs" />
|
||||
<Compile Include="TestObjects\ProductCollection.cs" />
|
||||
<Compile Include="TestObjects\ProductShort.cs" />
|
||||
<Compile Include="TestObjects\Shortie.cs" />
|
||||
<Compile Include="TestObjects\Store.cs" />
|
||||
<Compile Include="TestObjects\StoreColor.cs" />
|
||||
<Compile Include="TestObjects\Person.cs" />
|
||||
<Compile Include="Schema\JsonSchemaBuilderTests.cs" />
|
||||
<Compile Include="Schema\JsonSchemaGeneratorTests.cs" />
|
||||
<Compile Include="Schema\JsonSchemaTests.cs" />
|
||||
<Compile Include="JsonRawTests.cs" />
|
||||
<Compile Include="NullableDateTimeTestClass.cs" />
|
||||
<Compile Include="TestObjects\DateTimeTestClass.cs" />
|
||||
<Compile Include="Converters\IsoDateTimeConverterTests.cs" />
|
||||
<Compile Include="JsonConvertTest.cs" />
|
||||
<Compile Include="Converters\JavaScriptDateTimeConverterTests.cs" />
|
||||
<Compile Include="JsonSerializerTest.cs" />
|
||||
<Compile Include="JsonTextReaderTest.cs" />
|
||||
<Compile Include="JsonTextWriterTest.cs" />
|
||||
<Compile Include="Linq\JTokenReaderTest.cs" />
|
||||
<Compile Include="Linq\JTokenWriterTest.cs" />
|
||||
<Compile Include="Linq\JArrayTests.cs" />
|
||||
<Compile Include="Linq\JObjectTests.cs" />
|
||||
<Compile Include="Linq\JTokenEqualityComparerTests.cs" />
|
||||
<Compile Include="Linq\JTokenTests.cs" />
|
||||
<Compile Include="Linq\JValueTests.cs" />
|
||||
<Compile Include="Linq\LinqToJsonTest.cs" />
|
||||
<Compile Include="PerformanceTests.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="SilverlightTests.cs" />
|
||||
<Compile Include="TestFixtureBase.cs" />
|
||||
<Compile Include="Converters\XmlNodeConverterTest.cs" />
|
||||
<Compile Include="TestObjects\TypeClass.cs" />
|
||||
<Compile Include="TestObjects\TypedSubHashtable.cs" />
|
||||
<Compile Include="TestObjects\UserNullable.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Service Include="{3259AA49-8AA1-44D3-9025-A0B520596A8C}" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Newtonsoft.Json\Newtonsoft.Json.Net20.csproj">
|
||||
<Project>{A9AE40FF-1A21-414A-9FE7-3BE13644CC6D}</Project>
|
||||
<Name>Newtonsoft.Json.Net20</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
||||
@@ -65,6 +65,8 @@
|
||||
<ItemGroup>
|
||||
<Compile Include="Converters\BinaryConverterTests.cs" />
|
||||
<Compile Include="Converters\StringEnumConverterTests.cs" />
|
||||
<Compile Include="ExceptionTests.cs" />
|
||||
<Compile Include="JsonArrayAttributeTests.cs" />
|
||||
<Compile Include="Linq\JTokenReaderTest.cs" />
|
||||
<Compile Include="Linq\JTokenWriterTest.cs" />
|
||||
<Compile Include="JsonValidatingReaderTests.cs" />
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#if !SILVERLIGHT && !PocketPC
|
||||
#if !SILVERLIGHT && !PocketPC && !NET20
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// OTHER DEALINGS IN THE SOFTWARE.
|
||||
#endregion
|
||||
|
||||
#if !PocketPC && !SILVERLIGHT
|
||||
#if !PocketPC && !SILVERLIGHT && !NET20
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// OTHER DEALINGS IN THE SOFTWARE.
|
||||
#endregion
|
||||
|
||||
#if !PocketPC && !SILVERLIGHT
|
||||
#if !PocketPC && !SILVERLIGHT && !NET20
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
|
||||
@@ -26,6 +26,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Doc", "Doc", "{8F9E13D9-418
|
||||
Doc\ReadingWritingJSON.html = Doc\ReadingWritingJSON.html
|
||||
Doc\SerializationAttributes.html = Doc\SerializationAttributes.html
|
||||
Doc\SerializationCallbacks.html = Doc\SerializationCallbacks.html
|
||||
Doc\SerializingCollections.html = Doc\SerializingCollections.html
|
||||
Doc\SerializingJSON.html = Doc\SerializingJSON.html
|
||||
Doc\styles.css = Doc\styles.css
|
||||
EndProjectSection
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
#if !SILVERLIGHT && !PocketPC
|
||||
#if !SILVERLIGHT && !PocketPC && !NET20
|
||||
using System.Data.Linq;
|
||||
#endif
|
||||
#if !SILVERLIGHT
|
||||
@@ -67,7 +67,7 @@ namespace Newtonsoft.Json.Converters
|
||||
|
||||
private byte[] GetByteArray(object value)
|
||||
{
|
||||
#if !SILVERLIGHT && !PocketPC
|
||||
#if !SILVERLIGHT && !PocketPC && !NET20
|
||||
if (value is Binary)
|
||||
return ((Binary)value).ToArray();
|
||||
#endif
|
||||
@@ -109,11 +109,11 @@ namespace Newtonsoft.Json.Converters
|
||||
if (t == typeof(byte[]))
|
||||
return data;
|
||||
|
||||
#if !SILVERLIGHT && !PocketPC
|
||||
#if !SILVERLIGHT && !PocketPC && !NET20
|
||||
if (typeof(Binary).IsAssignableFrom(t))
|
||||
return new Binary(data);
|
||||
#endif
|
||||
#if !SILVERLIGHT
|
||||
#if !SILVERLIGHT
|
||||
if (typeof(SqlBinary).IsAssignableFrom(t))
|
||||
return new SqlBinary(data);
|
||||
#endif
|
||||
@@ -136,7 +136,7 @@ namespace Newtonsoft.Json.Converters
|
||||
if (t == typeof(byte[]))
|
||||
return true;
|
||||
|
||||
#if !SILVERLIGHT && !PocketPC
|
||||
#if !SILVERLIGHT && !PocketPC && !NET20
|
||||
if (typeof(Binary).IsAssignableFrom(t))
|
||||
return true;
|
||||
#endif
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// OTHER DEALINGS IN THE SOFTWARE.
|
||||
#endregion
|
||||
|
||||
#if !PocketPC && !SILVERLIGHT
|
||||
#if !PocketPC && !SILVERLIGHT && !NET20
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
@@ -24,13 +24,8 @@
|
||||
#endregion
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Collections;
|
||||
using System.IO;
|
||||
using System.Globalization;
|
||||
using System.Runtime.Serialization;
|
||||
using System.Reflection;
|
||||
using Newtonsoft.Json.Utilities;
|
||||
using System.Xml;
|
||||
using Newtonsoft.Json.Converters;
|
||||
@@ -95,27 +90,27 @@ namespace Newtonsoft.Json
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Converts the <see cref="DateTime"/> to it's JavaScript string representation.
|
||||
/// Converts the <see cref="DateTime"/> to its JSON string representation.
|
||||
/// </summary>
|
||||
/// <param name="value">The value to convert.</param>
|
||||
/// <returns>A Json string representation of the <see cref="DateTime"/>.</returns>
|
||||
/// <returns>A JSON string representation of the <see cref="DateTime"/>.</returns>
|
||||
public static string ToString(DateTime value)
|
||||
{
|
||||
TimeSpan utcOffset;
|
||||
#if PocketPC
|
||||
utcOffset = TimeZone.CurrentTimeZone.GetUtcOffset(value);
|
||||
#else
|
||||
#if !PocketPC && !NET20
|
||||
utcOffset = TimeZoneInfo.Local.GetUtcOffset(value);
|
||||
#else
|
||||
utcOffset = TimeZone.CurrentTimeZone.GetUtcOffset(value);
|
||||
#endif
|
||||
|
||||
return ToStringInternal(value, utcOffset, value.Kind);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Converts the <see cref="DateTimeOffset"/> to it's JavaScript string representation.
|
||||
/// Converts the <see cref="DateTimeOffset"/> to its JSON string representation.
|
||||
/// </summary>
|
||||
/// <param name="value">The value to convert.</param>
|
||||
/// <returns>A Json string representation of the <see cref="DateTimeOffset"/>.</returns>
|
||||
/// <returns>A JSON string representation of the <see cref="DateTimeOffset"/>.</returns>
|
||||
public static string ToString(DateTimeOffset value)
|
||||
{
|
||||
return ToStringInternal(value.UtcDateTime, value.Offset, DateTimeKind.Local);
|
||||
@@ -143,10 +138,7 @@ namespace Newtonsoft.Json
|
||||
{
|
||||
DateTime utcDateTime = dateTime.ToUniversalTime();
|
||||
|
||||
//if (utcDateTime < MinimumJavaScriptDate)
|
||||
// utcDateTime = MinimumJavaScriptDate;
|
||||
|
||||
long javaScriptTicks = (utcDateTime.Ticks - InitialJavaScriptDateTicks) / (long)10000;
|
||||
long javaScriptTicks = (utcDateTime.Ticks - InitialJavaScriptDateTicks) / 10000;
|
||||
|
||||
return javaScriptTicks;
|
||||
}
|
||||
@@ -159,110 +151,110 @@ namespace Newtonsoft.Json
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Converts the <see cref="Boolean"/> to it's JavaScript string representation.
|
||||
/// Converts the <see cref="Boolean"/> to its JSON string representation.
|
||||
/// </summary>
|
||||
/// <param name="value">The value to convert.</param>
|
||||
/// <returns>A Json string representation of the <see cref="Boolean"/>.</returns>
|
||||
/// <returns>A JSON string representation of the <see cref="Boolean"/>.</returns>
|
||||
public static string ToString(bool value)
|
||||
{
|
||||
return (value) ? True : False;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Converts the <see cref="Char"/> to it's JavaScript string representation.
|
||||
/// Converts the <see cref="Char"/> to its JSON string representation.
|
||||
/// </summary>
|
||||
/// <param name="value">The value to convert.</param>
|
||||
/// <returns>A Json string representation of the <see cref="Char"/>.</returns>
|
||||
/// <returns>A JSON string representation of the <see cref="Char"/>.</returns>
|
||||
public static string ToString(char value)
|
||||
{
|
||||
return ToString(char.ToString(value));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Converts the <see cref="Enum"/> to it's JavaScript string representation.
|
||||
/// Converts the <see cref="Enum"/> to its JSON string representation.
|
||||
/// </summary>
|
||||
/// <param name="value">The value to convert.</param>
|
||||
/// <returns>A Json string representation of the <see cref="Enum"/>.</returns>
|
||||
/// <returns>A JSON string representation of the <see cref="Enum"/>.</returns>
|
||||
public static string ToString(Enum value)
|
||||
{
|
||||
return value.ToString("D");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Converts the <see cref="Int32"/> to it's JavaScript string representation.
|
||||
/// Converts the <see cref="Int32"/> to its JSON string representation.
|
||||
/// </summary>
|
||||
/// <param name="value">The value to convert.</param>
|
||||
/// <returns>A Json string representation of the <see cref="Int32"/>.</returns>
|
||||
/// <returns>A JSON string representation of the <see cref="Int32"/>.</returns>
|
||||
public static string ToString(int value)
|
||||
{
|
||||
return value.ToString(null, CultureInfo.InvariantCulture);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Converts the <see cref="Int16"/> to it's JavaScript string representation.
|
||||
/// Converts the <see cref="Int16"/> to its JSON string representation.
|
||||
/// </summary>
|
||||
/// <param name="value">The value to convert.</param>
|
||||
/// <returns>A Json string representation of the <see cref="Int16"/>.</returns>
|
||||
/// <returns>A JSON string representation of the <see cref="Int16"/>.</returns>
|
||||
public static string ToString(short value)
|
||||
{
|
||||
return value.ToString(null, CultureInfo.InvariantCulture);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Converts the <see cref="UInt16"/> to it's JavaScript string representation.
|
||||
/// Converts the <see cref="UInt16"/> to its JSON string representation.
|
||||
/// </summary>
|
||||
/// <param name="value">The value to convert.</param>
|
||||
/// <returns>A Json string representation of the <see cref="UInt16"/>.</returns>
|
||||
/// <returns>A JSON string representation of the <see cref="UInt16"/>.</returns>
|
||||
public static string ToString(ushort value)
|
||||
{
|
||||
return value.ToString(null, CultureInfo.InvariantCulture);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Converts the <see cref="UInt32"/> to it's JavaScript string representation.
|
||||
/// Converts the <see cref="UInt32"/> to its JSON string representation.
|
||||
/// </summary>
|
||||
/// <param name="value">The value to convert.</param>
|
||||
/// <returns>A Json string representation of the <see cref="UInt32"/>.</returns>
|
||||
/// <returns>A JSON string representation of the <see cref="UInt32"/>.</returns>
|
||||
public static string ToString(uint value)
|
||||
{
|
||||
return value.ToString(null, CultureInfo.InvariantCulture);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Converts the <see cref="Int64"/> to it's JavaScript string representation.
|
||||
/// Converts the <see cref="Int64"/> to its JSON string representation.
|
||||
/// </summary>
|
||||
/// <param name="value">The value to convert.</param>
|
||||
/// <returns>A Json string representation of the <see cref="Int64"/>.</returns>
|
||||
/// <returns>A JSON string representation of the <see cref="Int64"/>.</returns>
|
||||
public static string ToString(long value)
|
||||
{
|
||||
return value.ToString(null, CultureInfo.InvariantCulture);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Converts the <see cref="UInt64"/> to it's JavaScript string representation.
|
||||
/// Converts the <see cref="UInt64"/> to its JSON string representation.
|
||||
/// </summary>
|
||||
/// <param name="value">The value to convert.</param>
|
||||
/// <returns>A Json string representation of the <see cref="UInt64"/>.</returns>
|
||||
/// <returns>A JSON string representation of the <see cref="UInt64"/>.</returns>
|
||||
public static string ToString(ulong value)
|
||||
{
|
||||
return value.ToString(null, CultureInfo.InvariantCulture);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Converts the <see cref="Single"/> to it's JavaScript string representation.
|
||||
/// Converts the <see cref="Single"/> to its JSON string representation.
|
||||
/// </summary>
|
||||
/// <param name="value">The value to convert.</param>
|
||||
/// <returns>A Json string representation of the <see cref="Single"/>.</returns>
|
||||
/// <returns>A JSON string representation of the <see cref="Single"/>.</returns>
|
||||
public static string ToString(float value)
|
||||
{
|
||||
return EnsureDecimalPlace(value, value.ToString("R", CultureInfo.InvariantCulture));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Converts the <see cref="Double"/> to it's JavaScript string representation.
|
||||
/// Converts the <see cref="Double"/> to its JSON string representation.
|
||||
/// </summary>
|
||||
/// <param name="value">The value to convert.</param>
|
||||
/// <returns>A Json string representation of the <see cref="Double"/>.</returns>
|
||||
/// <returns>A JSON string representation of the <see cref="Double"/>.</returns>
|
||||
public static string ToString(double value)
|
||||
{
|
||||
return EnsureDecimalPlace(value, value.ToString("R", CultureInfo.InvariantCulture));
|
||||
@@ -285,80 +277,79 @@ namespace Newtonsoft.Json
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Converts the <see cref="Byte"/> to it's JavaScript string representation.
|
||||
/// Converts the <see cref="Byte"/> to its JSON string representation.
|
||||
/// </summary>
|
||||
/// <param name="value">The value to convert.</param>
|
||||
/// <returns>A Json string representation of the <see cref="Byte"/>.</returns>
|
||||
/// <returns>A JSON string representation of the <see cref="Byte"/>.</returns>
|
||||
public static string ToString(byte value)
|
||||
{
|
||||
return value.ToString(null, CultureInfo.InvariantCulture);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Converts the <see cref="SByte"/> to it's JavaScript string representation.
|
||||
/// Converts the <see cref="SByte"/> to its JSON string representation.
|
||||
/// </summary>
|
||||
/// <param name="value">The value to convert.</param>
|
||||
/// <returns>A Json string representation of the <see cref="SByte"/>.</returns>
|
||||
/// <returns>A JSON string representation of the <see cref="SByte"/>.</returns>
|
||||
public static string ToString(sbyte value)
|
||||
{
|
||||
return value.ToString(null, CultureInfo.InvariantCulture);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Converts the <see cref="Decimal"/> to it's JavaScript string representation.
|
||||
/// Converts the <see cref="Decimal"/> to its JSON string representation.
|
||||
/// </summary>
|
||||
/// <param name="value">The value to convert.</param>
|
||||
/// <returns>A Json string representation of the <see cref="SByte"/>.</returns>
|
||||
/// <returns>A JSON string representation of the <see cref="SByte"/>.</returns>
|
||||
public static string ToString(decimal value)
|
||||
{
|
||||
return EnsureDecimalPlace(value.ToString(null, CultureInfo.InvariantCulture));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Converts the <see cref="Guid"/> to it's JavaScript string representation.
|
||||
/// Converts the <see cref="Guid"/> to its JSON string representation.
|
||||
/// </summary>
|
||||
/// <param name="value">The value to convert.</param>
|
||||
/// <returns>A Json string representation of the <see cref="Guid"/>.</returns>
|
||||
/// <returns>A JSON string representation of the <see cref="Guid"/>.</returns>
|
||||
public static string ToString(Guid value)
|
||||
{
|
||||
return '"' + value.ToString("D", CultureInfo.InvariantCulture) + '"';
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Converts the <see cref="String"/> to it's JavaScript string representation.
|
||||
/// Converts the <see cref="String"/> to its JSON string representation.
|
||||
/// </summary>
|
||||
/// <param name="value">The value to convert.</param>
|
||||
/// <returns>A Json string representation of the <see cref="String"/>.</returns>
|
||||
/// <returns>A JSON string representation of the <see cref="String"/>.</returns>
|
||||
public static string ToString(string value)
|
||||
{
|
||||
return ToString(value, '"');
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Converts the <see cref="String"/> to it's JavaScript string representation.
|
||||
/// Converts the <see cref="String"/> to its JSON string representation.
|
||||
/// </summary>
|
||||
/// <param name="value">The value to convert.</param>
|
||||
/// <param name="delimter">The string delimiter character.</param>
|
||||
/// <returns>A Json string representation of the <see cref="String"/>.</returns>
|
||||
/// <returns>A JSON string representation of the <see cref="String"/>.</returns>
|
||||
public static string ToString(string value, char delimter)
|
||||
{
|
||||
return JavaScriptUtils.ToEscapedJavaScriptString(value, delimter, true);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Converts the <see cref="Object"/> to it's JavaScript string representation.
|
||||
/// Converts the <see cref="Object"/> to its JSON string representation.
|
||||
/// </summary>
|
||||
/// <param name="value">The value to convert.</param>
|
||||
/// <returns>A Json string representation of the <see cref="Object"/>.</returns>
|
||||
/// <returns>A JSON string representation of the <see cref="Object"/>.</returns>
|
||||
public static string ToString(object value)
|
||||
{
|
||||
if (value == null)
|
||||
{
|
||||
return Null;
|
||||
}
|
||||
else if (value is IConvertible)
|
||||
|
||||
if (value is IConvertible)
|
||||
{
|
||||
IConvertible convertible = value as IConvertible;
|
||||
IConvertible convertible = (IConvertible)value;
|
||||
|
||||
switch (convertible.GetTypeCode())
|
||||
{
|
||||
@@ -407,12 +398,11 @@ namespace Newtonsoft.Json
|
||||
internal static bool IsJsonPrimitive(object value)
|
||||
{
|
||||
if (value == null)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else if (value is IConvertible)
|
||||
|
||||
if (value is IConvertible)
|
||||
{
|
||||
IConvertible convertible = value as IConvertible;
|
||||
IConvertible convertible = (IConvertible)value;
|
||||
|
||||
switch (convertible.GetTypeCode())
|
||||
{
|
||||
@@ -437,10 +427,9 @@ namespace Newtonsoft.Json
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else if (value is DateTimeOffset)
|
||||
{
|
||||
|
||||
if (value is DateTimeOffset)
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -54,7 +54,7 @@ namespace Newtonsoft.Json
|
||||
|
||||
private static readonly IList<JsonConverter> BuiltInConverters = new List<JsonConverter>
|
||||
{
|
||||
#if !PocketPC && !SILVERLIGHT
|
||||
#if !PocketPC && !SILVERLIGHT && !NET20
|
||||
new EntityKeyMemberConverter()
|
||||
#endif
|
||||
};
|
||||
|
||||
@@ -268,7 +268,7 @@ namespace Newtonsoft.Json
|
||||
|
||||
if (schema.Enum != null)
|
||||
{
|
||||
if (!schema.Enum.Contains(value, new JTokenEqualityComparer()))
|
||||
if (!schema.Enum.ContainsValue(value, new JTokenEqualityComparer()))
|
||||
RaiseError("Value {0} is not defined in enum.".FormatWith(CultureInfo.InvariantCulture, value),
|
||||
schema);
|
||||
}
|
||||
|
||||
@@ -217,7 +217,7 @@ namespace Newtonsoft.Json.Linq
|
||||
else if (value is bool)
|
||||
return JTokenType.Boolean;
|
||||
|
||||
throw new ArgumentException("Could not determin JSON object type for type {0}.".FormatWith(CultureInfo.InvariantCulture, value.GetType()));
|
||||
throw new ArgumentException("Could not determine JSON object type for type {0}.".FormatWith(CultureInfo.InvariantCulture, value.GetType()));
|
||||
}
|
||||
|
||||
private static JTokenType GetStringValueType(JTokenType? current)
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<ProjectGuid>{256AA604-F61B-4B6D-8D51-C8E6AB11E435}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>Newtonsoft.Json.Compact</RootNamespace>
|
||||
<RootNamespace>Newtonsoft.Json</RootNamespace>
|
||||
<AssemblyName>Newtonsoft.Json.Compact</AssemblyName>
|
||||
<ProjectTypeGuids>{4D628B5B-2FBC-4AA6-8C16-197242AEB884};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
|
||||
<PlatformFamilyName>PocketPC</PlatformFamilyName>
|
||||
@@ -31,6 +31,8 @@
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
|
||||
<DocumentationFile>
|
||||
</DocumentationFile>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
@@ -43,7 +45,7 @@
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
|
||||
<DocumentationFile>bin\Release\Newtonsoft.Json.Compact.XML</DocumentationFile>
|
||||
<DocumentationFile>bin\Release\Newtonsoft.Json.Compact.xml</DocumentationFile>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="mscorlib" />
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -8,7 +8,7 @@
|
||||
<ProjectTypeGuids>{A1591282-1198-4647-A2B1-27E5FF5F6F3B};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>Newtonsoft.Json.Silverlight</RootNamespace>
|
||||
<RootNamespace>Newtonsoft.Json</RootNamespace>
|
||||
<AssemblyName>Newtonsoft.Json.Silverlight</AssemblyName>
|
||||
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
|
||||
<SilverlightApplication>false</SilverlightApplication>
|
||||
@@ -25,7 +25,7 @@
|
||||
<NoConfig>true</NoConfig>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<DocumentationFile>Bin\Debug\Newtonsoft.Json.Silverlight.XML</DocumentationFile>
|
||||
<DocumentationFile>Bin\Debug\Newtonsoft.Json.Silverlight.xml</DocumentationFile>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
@@ -36,7 +36,7 @@
|
||||
<NoConfig>true</NoConfig>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<DocumentationFile>Bin\Release\Newtonsoft.Json.Silverlight.XML</DocumentationFile>
|
||||
<DocumentationFile>Bin\Release\Newtonsoft.Json.Silverlight.xml</DocumentationFile>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System.Runtime.Serialization" />
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -29,6 +29,9 @@ using System.Security;
|
||||
[assembly: AssemblyTitle("Newtonsoft Json.NET Silverlight")]
|
||||
#elif PocketPC
|
||||
[assembly: AssemblyTitle("Newtonsoft Json.NET Compact")]
|
||||
#elif NET20
|
||||
[assembly: AssemblyTitle("Newtonsoft Json.NET .NET 2.0")]
|
||||
[assembly: AllowPartiallyTrustedCallers]
|
||||
#else
|
||||
[assembly: AssemblyTitle("Newtonsoft Json.NET")]
|
||||
[assembly: AllowPartiallyTrustedCallers]
|
||||
@@ -40,6 +43,8 @@ using System.Security;
|
||||
[assembly: InternalsVisibleTo("Newtonsoft.Json.Tests.Silverlight")]
|
||||
#elif PocketPC
|
||||
[assembly: InternalsVisibleTo("Newtonsoft.Json.Tests.Compact")]
|
||||
#elif NET20
|
||||
[assembly: InternalsVisibleTo("Newtonsoft.Json.Tests.Net20")]
|
||||
#else
|
||||
[assembly: InternalsVisibleTo("Newtonsoft.Json.Tests")]
|
||||
#endif
|
||||
|
||||
@@ -32,7 +32,7 @@ using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Runtime.Serialization;
|
||||
using Newtonsoft.Json.Utilities;
|
||||
#if !PocketPC && !SILVERLIGHT
|
||||
#if !PocketPC && !SILVERLIGHT && !NET20
|
||||
using System.Data.Objects.DataClasses;
|
||||
#endif
|
||||
|
||||
@@ -80,10 +80,10 @@ namespace Newtonsoft.Json.Serialization
|
||||
/// <returns>The serializable members for the type.</returns>
|
||||
protected virtual List<MemberInfo> GetSerializableMembers(Type objectType)
|
||||
{
|
||||
#if !PocketPC
|
||||
#if !PocketPC && !NET20
|
||||
DataContractAttribute dataContractAttribute = JsonTypeReflector.GetDataContractAttribute(objectType);
|
||||
#endif
|
||||
|
||||
|
||||
List<MemberInfo> defaultMembers = ReflectionUtils.GetFieldsAndProperties(objectType, DefaultMembersSearchFlags);
|
||||
List<MemberInfo> allMembers = ReflectionUtils.GetFieldsAndProperties(objectType, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static);
|
||||
|
||||
@@ -98,14 +98,14 @@ namespace Newtonsoft.Json.Serialization
|
||||
{
|
||||
if (JsonTypeReflector.GetAttribute<JsonPropertyAttribute>(member) != null)
|
||||
serializableMembers.Add(member);
|
||||
#if !PocketPC
|
||||
#if !PocketPC && !NET20
|
||||
else if (dataContractAttribute != null && JsonTypeReflector.GetAttribute<DataMemberAttribute>(member) != null)
|
||||
serializableMembers.Add(member);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
#if !PocketPC && !SILVERLIGHT
|
||||
#if !PocketPC && !SILVERLIGHT && !NET20
|
||||
// don't include EntityKey on entities objects... this is a bit hacky
|
||||
if (typeof(EntityObject).IsAssignableFrom(objectType))
|
||||
serializableMembers = serializableMembers.Where(ShouldSerializeEntityMember).ToList();
|
||||
@@ -114,7 +114,7 @@ namespace Newtonsoft.Json.Serialization
|
||||
return serializableMembers;
|
||||
}
|
||||
|
||||
#if !PocketPC && !SILVERLIGHT
|
||||
#if !PocketPC && !SILVERLIGHT && !NET20
|
||||
private bool ShouldSerializeEntityMember(MemberInfo memberInfo)
|
||||
{
|
||||
PropertyInfo propertyInfo = memberInfo as PropertyInfo;
|
||||
@@ -151,7 +151,7 @@ namespace Newtonsoft.Json.Serialization
|
||||
{
|
||||
contract.IsReference = containerAttribute._isReference;
|
||||
}
|
||||
#if !PocketPC
|
||||
#if !PocketPC && !NET20
|
||||
else
|
||||
{
|
||||
DataContractAttribute dataContractAttribute = JsonTypeReflector.GetDataContractAttribute(contract.UnderlyingType);
|
||||
@@ -161,7 +161,7 @@ namespace Newtonsoft.Json.Serialization
|
||||
}
|
||||
#endif
|
||||
|
||||
#if !PocketPC && !SILVERLIGHT
|
||||
#if !PocketPC && !SILVERLIGHT && !NET20
|
||||
foreach (MethodInfo method in contract.UnderlyingType.GetMethods(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly))
|
||||
{
|
||||
Type prevAttributeType = null;
|
||||
@@ -231,7 +231,7 @@ namespace Newtonsoft.Json.Serialization
|
||||
return CreateObjectContract(objectType);
|
||||
}
|
||||
|
||||
#if !PocketPC && !SILVERLIGHT
|
||||
#if !PocketPC && !SILVERLIGHT && !NET20
|
||||
private static bool IsValidCallback(MethodInfo method, ParameterInfo[] parameters, Type attributeType, MethodInfo currentCallback, ref Type prevAttributeType)
|
||||
{
|
||||
if (!method.IsDefined(attributeType, false))
|
||||
@@ -301,7 +301,7 @@ namespace Newtonsoft.Json.Serialization
|
||||
JsonProperty property = new JsonProperty();
|
||||
property.Member = member;
|
||||
|
||||
#if !PocketPC
|
||||
#if !PocketPC && !NET20
|
||||
DataContractAttribute dataContractAttribute = JsonTypeReflector.GetDataContractAttribute(member.DeclaringType);
|
||||
|
||||
DataMemberAttribute dataMemberAttribute;
|
||||
@@ -317,7 +317,7 @@ namespace Newtonsoft.Json.Serialization
|
||||
string mappedName;
|
||||
if (propertyAttribute != null && propertyAttribute.PropertyName != null)
|
||||
mappedName = propertyAttribute.PropertyName;
|
||||
#if !PocketPC
|
||||
#if !PocketPC && !NET20
|
||||
else if (dataMemberAttribute != null && dataMemberAttribute.Name != null)
|
||||
mappedName = dataMemberAttribute.Name;
|
||||
#endif
|
||||
@@ -328,7 +328,7 @@ namespace Newtonsoft.Json.Serialization
|
||||
|
||||
if (propertyAttribute != null)
|
||||
property.Required = propertyAttribute.IsRequired;
|
||||
#if !PocketPC
|
||||
#if !PocketPC && !NET20
|
||||
else if (dataMemberAttribute != null)
|
||||
property.Required = dataMemberAttribute.IsRequired;
|
||||
#endif
|
||||
@@ -338,10 +338,10 @@ namespace Newtonsoft.Json.Serialization
|
||||
property.Ignored = (hasIgnoreAttribute ||
|
||||
(contract.MemberSerialization == MemberSerialization.OptIn
|
||||
&& propertyAttribute == null
|
||||
#if !PocketPC
|
||||
#if !PocketPC && !NET20
|
||||
&& dataMemberAttribute == null
|
||||
#endif
|
||||
));
|
||||
));
|
||||
|
||||
property.Readable = ReflectionUtils.CanReadMemberValue(member);
|
||||
property.Writable = ReflectionUtils.CanSetMemberValue(member);
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
#endregion
|
||||
|
||||
using System;
|
||||
#if !SILVERLIGHT && !PocketPC
|
||||
#if !SILVERLIGHT && !PocketPC && !NET20
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
#endif
|
||||
using System.Globalization;
|
||||
@@ -43,7 +43,7 @@ namespace Newtonsoft.Json.Serialization
|
||||
public const string ArrayValuesPropertyName = "$values";
|
||||
|
||||
private static readonly ThreadSafeStore<ICustomAttributeProvider, Type> ConverterTypeCache = new ThreadSafeStore<ICustomAttributeProvider, Type>(GetConverterTypeFromAttribute);
|
||||
#if !SILVERLIGHT && !PocketPC
|
||||
#if !SILVERLIGHT && !PocketPC && !NET20
|
||||
private static readonly ThreadSafeStore<Type, Type> AssociatedMetadataTypesCache = new ThreadSafeStore<Type, Type>(GetAssociateMetadataTypeFromAttribute);
|
||||
#endif
|
||||
|
||||
@@ -57,7 +57,7 @@ namespace Newtonsoft.Json.Serialization
|
||||
return GetJsonContainerAttribute(type) as JsonObjectAttribute;
|
||||
}
|
||||
|
||||
#if !PocketPC
|
||||
#if !PocketPC && !NET20
|
||||
public static DataContractAttribute GetDataContractAttribute(Type type)
|
||||
{
|
||||
return CachedAttributeGetter<DataContractAttribute>.GetAttribute(type);
|
||||
@@ -70,13 +70,13 @@ namespace Newtonsoft.Json.Serialization
|
||||
|
||||
if (objectAttribute == null)
|
||||
{
|
||||
#if !PocketPC
|
||||
#if !PocketPC && !NET20
|
||||
DataContractAttribute dataContractAttribute = GetDataContractAttribute(objectType);
|
||||
|
||||
if (dataContractAttribute != null)
|
||||
return MemberSerialization.OptIn;
|
||||
#endif
|
||||
|
||||
|
||||
return MemberSerialization.OptOut;
|
||||
}
|
||||
|
||||
@@ -113,7 +113,7 @@ namespace Newtonsoft.Json.Serialization
|
||||
return null;
|
||||
}
|
||||
|
||||
#if !SILVERLIGHT && !PocketPC
|
||||
#if !SILVERLIGHT && !PocketPC && !NET20
|
||||
private static Type GetAssociatedMetadataType(Type type)
|
||||
{
|
||||
return AssociatedMetadataTypesCache.Get(type);
|
||||
|
||||
@@ -580,13 +580,31 @@ namespace Newtonsoft.Json.Utilities
|
||||
|
||||
public static bool AddDistinct<T>(this IList<T> list, T value, IEqualityComparer<T> comparer)
|
||||
{
|
||||
if (list.Contains(value, comparer))
|
||||
if (list.ContainsValue(value, comparer))
|
||||
return false;
|
||||
|
||||
list.Add(value);
|
||||
return true;
|
||||
}
|
||||
|
||||
// this is here because LINQ Bridge doesn't support Contains with IEqualityComparer<T>
|
||||
public static bool ContainsValue<TSource>(this IEnumerable<TSource> source, TSource value, IEqualityComparer<TSource> comparer)
|
||||
{
|
||||
if (comparer == null)
|
||||
comparer = EqualityComparer<TSource>.Default;
|
||||
|
||||
if (source == null)
|
||||
throw new ArgumentNullException("source");
|
||||
|
||||
foreach (TSource local in source)
|
||||
{
|
||||
if (comparer.Equals(local, value))
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public static bool AddRangeDistinct<T>(this IList<T> list, IEnumerable<T> values)
|
||||
{
|
||||
return list.AddRangeDistinct(values, EqualityComparer<T>.Default);
|
||||
|
||||
@@ -12,7 +12,7 @@ namespace Newtonsoft.Json.Utilities
|
||||
public static string GetLocalOffset(this DateTime d)
|
||||
{
|
||||
TimeSpan utcOffset;
|
||||
#if PocketPC
|
||||
#if PocketPC || NET20
|
||||
utcOffset = TimeZone.CurrentTimeZone.GetUtcOffset(d);
|
||||
#else
|
||||
utcOffset = TimeZoneInfo.Local.GetUtcOffset(d);
|
||||
|
||||
Reference in New Issue
Block a user