-Removed Windows Phone from build
-Performance
This commit is contained in:
@@ -21,7 +21,6 @@
|
||||
@{Name = "Newtonsoft.Json.Portable"; TestsName = "Newtonsoft.Json.Tests.Portable"; Constants="PORTABLE"; FinalDir="Portable"; NuGetDir = "portable-net45+wp80+win8"; Framework="net-4.0"; Sign=$true},
|
||||
@{Name = "Newtonsoft.Json.Portable40"; TestsName = "Newtonsoft.Json.Tests.Portable40"; Constants="PORTABLE40"; FinalDir="Portable40"; NuGetDir = "portable-net40+sl4+wp7+win8"; Framework="net-4.0"; Sign=$true},
|
||||
@{Name = "Newtonsoft.Json.WinRT"; TestsName = $null; Constants="NETFX_CORE"; FinalDir="WinRT"; NuGetDir = "netcore45"; Framework="net-4.5"; Sign=$true},
|
||||
@{Name = "Newtonsoft.Json.WindowsPhone"; TestsName = $null; Constants="SILVERLIGHT;WINDOWS_PHONE"; FinalDir="WindowsPhone"; NuGetDir = "wp80"; Framework="net-4.0"; Sign=$true},
|
||||
@{Name = "Newtonsoft.Json.Net40"; TestsName = "Newtonsoft.Json.Tests.Net40"; Constants="NET40"; FinalDir="Net40"; NuGetDir = "net40"; Framework="net-4.0"; Sign=$true},
|
||||
@{Name = "Newtonsoft.Json.Net35"; TestsName = "Newtonsoft.Json.Tests.Net35"; Constants="NET35"; FinalDir="Net35"; NuGetDir = "net35"; Framework="net-2.0"; Sign=$true},
|
||||
@{Name = "Newtonsoft.Json.Net20"; TestsName = "Newtonsoft.Json.Tests.Net20"; Constants="NET20"; FinalDir="Net20"; NuGetDir = "net20"; Framework="net-2.0"; Sign=$true}
|
||||
|
||||
+1
-4
@@ -24,7 +24,7 @@ http://james.newtonking.com/projects/json/help/
|
||||
|
||||
Versions:
|
||||
|
||||
Json.NET comes in different versions for the various .NET frameworks.
|
||||
Json.NET has different libaries for the various .NET Framework versions.
|
||||
|
||||
-Net45:
|
||||
.NET latest (4.5)
|
||||
@@ -38,9 +38,6 @@ Json.NET comes in different versions for the various .NET frameworks.
|
||||
-Net20:
|
||||
.NET 2.0
|
||||
|
||||
-WindowsPhone:
|
||||
Windows Phone 8
|
||||
|
||||
-WinRT:
|
||||
Windows 8 Store
|
||||
|
||||
|
||||
@@ -220,7 +220,9 @@ namespace Newtonsoft.Json.Tests.Bson
|
||||
byte[] data = HexToBytes("8C-00-00-00-12-30-00-FF-FF-FF-FF-FF-FF-FF-7F-12-31-00-FF-FF-FF-FF-FF-FF-FF-7F-10-32-00-FF-FF-FF-7F-10-33-00-FF-FF-FF-7F-10-34-00-FF-00-00-00-10-35-00-7F-00-00-00-02-36-00-02-00-00-00-61-00-01-37-00-00-00-00-00-00-00-F0-45-01-38-00-FF-FF-FF-FF-FF-FF-EF-7F-01-39-00-00-00-00-E0-FF-FF-EF-47-08-31-30-00-01-05-31-31-00-05-00-00-00-02-00-01-02-03-04-09-31-32-00-40-C5-E2-BA-E3-00-00-00-09-31-33-00-40-C5-E2-BA-E3-00-00-00-00");
|
||||
MemoryStream ms = new MemoryStream(data);
|
||||
BsonReader reader = new BsonReader(ms);
|
||||
#pragma warning disable 612,618
|
||||
reader.JsonNet35BinaryCompatibility = true;
|
||||
#pragma warning restore 612,618
|
||||
reader.ReadRootValueAsArray = true;
|
||||
reader.DateTimeKindHandling = DateTimeKind.Utc;
|
||||
|
||||
@@ -429,7 +431,9 @@ namespace Newtonsoft.Json.Tests.Bson
|
||||
|
||||
MemoryStream ms = new MemoryStream(data);
|
||||
BsonReader reader = new BsonReader(ms, true, DateTimeKind.Utc);
|
||||
#pragma warning disable 612,618
|
||||
reader.JsonNet35BinaryCompatibility = true;
|
||||
#pragma warning restore 612,618
|
||||
|
||||
Assert.AreEqual(true, reader.ReadRootValueAsArray);
|
||||
Assert.AreEqual(DateTimeKind.Utc, reader.DateTimeKindHandling);
|
||||
@@ -566,7 +570,9 @@ namespace Newtonsoft.Json.Tests.Bson
|
||||
byte[] data = HexToBytes(hexdoc);
|
||||
|
||||
BsonReader reader = new BsonReader(new MemoryStream(data));
|
||||
#pragma warning disable 612,618
|
||||
reader.JsonNet35BinaryCompatibility = true;
|
||||
#pragma warning restore 612,618
|
||||
|
||||
JObject o = (JObject)JToken.ReadFrom(reader);
|
||||
Assert.AreEqual(3, o.Count);
|
||||
@@ -587,7 +593,9 @@ namespace Newtonsoft.Json.Tests.Bson
|
||||
"82-00-00-00-07-5F-69-64-00-4A-78-93-79-17-22-00-00-00-00-61-CF-04-61-00-5D-00-00-00-01-30-00-00-00-00-00-00-00-F0-3F-01-31-00-00-00-00-00-00-00-00-40-01-32-00-00-00-00-00-00-00-08-40-01-33-00-00-00-00-00-00-00-10-40-01-34-00-00-00-00-00-00-00-14-50-01-35-00-00-00-00-00-00-00-18-40-01-36-00-00-00-00-00-00-00-1C-40-01-37-00-00-00-00-00-00-00-20-40-00-02-62-00-05-00-00-00-74-65-73-74-00-00");
|
||||
|
||||
BsonReader reader1 = new BsonReader(new MemoryStream(data1));
|
||||
#pragma warning disable 612,618
|
||||
reader1.JsonNet35BinaryCompatibility = true;
|
||||
#pragma warning restore 612,618
|
||||
|
||||
// oid
|
||||
JObject o1 = (JObject)JToken.ReadFrom(reader1);
|
||||
@@ -596,7 +604,9 @@ namespace Newtonsoft.Json.Tests.Bson
|
||||
"87-00-00-00-05-5F-69-64-00-0C-00-00-00-02-4A-78-93-79-17-22-00-00-00-00-61-CF-04-61-00-5D-00-00-00-01-30-00-00-00-00-00-00-00-F0-3F-01-31-00-00-00-00-00-00-00-00-40-01-32-00-00-00-00-00-00-00-08-40-01-33-00-00-00-00-00-00-00-10-40-01-34-00-00-00-00-00-00-00-14-50-01-35-00-00-00-00-00-00-00-18-40-01-36-00-00-00-00-00-00-00-1C-40-01-37-00-00-00-00-00-00-00-20-40-00-02-62-00-05-00-00-00-74-65-73-74-00-00");
|
||||
|
||||
BsonReader reader2 = new BsonReader(new MemoryStream(data2));
|
||||
#pragma warning disable 612,618
|
||||
reader2.JsonNet35BinaryCompatibility = true;
|
||||
#pragma warning restore 612,618
|
||||
|
||||
// bytes
|
||||
JObject o2 = (JObject)JToken.ReadFrom(reader2);
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Runtime.Serialization;
|
||||
#if !NETFX_CORE
|
||||
using NUnit.Framework;
|
||||
@@ -67,6 +68,14 @@ namespace Newtonsoft.Json.Tests.Serialization
|
||||
}
|
||||
}
|
||||
|
||||
public class EscapedPropertiesContractResolver : DefaultContractResolver
|
||||
{
|
||||
protected internal override string ResolvePropertyName(string propertyName)
|
||||
{
|
||||
return base.ResolvePropertyName(propertyName + @"-'-""-");
|
||||
}
|
||||
}
|
||||
|
||||
public class Book
|
||||
{
|
||||
public string BookName { get; set; }
|
||||
@@ -99,6 +108,28 @@ namespace Newtonsoft.Json.Tests.Serialization
|
||||
[TestFixture]
|
||||
public class ContractResolverTests : TestFixtureBase
|
||||
{
|
||||
[Test]
|
||||
public void SerializeWithEscapedPropertyName()
|
||||
{
|
||||
string json = JsonConvert.SerializeObject(
|
||||
new AddressWithDataMember
|
||||
{
|
||||
AddressLine1 = "value!"
|
||||
},
|
||||
new JsonSerializerSettings
|
||||
{
|
||||
ContractResolver = new EscapedPropertiesContractResolver()
|
||||
});
|
||||
|
||||
Assert.AreEqual(@"{""AddressLine1-'-\""-"":""value!""}", json);
|
||||
|
||||
JsonTextReader reader = new JsonTextReader(new StringReader(json));
|
||||
reader.Read();
|
||||
reader.Read();
|
||||
|
||||
Assert.AreEqual(@"AddressLine1-'-""-", reader.Value);
|
||||
}
|
||||
|
||||
#if !NET20
|
||||
[Test]
|
||||
public void DeserializeDataMemberClassWithNoDataContract()
|
||||
|
||||
@@ -125,6 +125,8 @@ namespace Newtonsoft.Json.Tests.Serialization
|
||||
Assert.AreEqual(@"{""NewMember"":""NewMember!"",""virtualMember"":""VirtualMember!"",""nonVirtualMember"":""NonVirtualMember!""}", result);
|
||||
}
|
||||
|
||||
// ignore hiding members compiler warning
|
||||
#pragma warning disable 108,114
|
||||
[DataContract]
|
||||
public class BaseWithContract
|
||||
{
|
||||
@@ -189,6 +191,7 @@ namespace Newtonsoft.Json.Tests.Serialization
|
||||
[DataMember(Name = "VirtualWithDataMemberSub")]
|
||||
public virtual string VirtualWithDataMember { get; set; }
|
||||
}
|
||||
#pragma warning restore 108,114
|
||||
|
||||
[Test]
|
||||
public void SubWithoutContractNewPropertiesTest()
|
||||
|
||||
@@ -303,6 +303,11 @@ namespace Newtonsoft.Json
|
||||
}
|
||||
|
||||
#region WriteValue methods
|
||||
/// <summary>
|
||||
/// Writes a <see cref="Object"/> value.
|
||||
/// An error will raised if the value cannot be written as a single JSON token.
|
||||
/// </summary>
|
||||
/// <param name="value">The <see cref="Object"/> value to write.</param>
|
||||
public override void WriteValue(object value)
|
||||
{
|
||||
#if !(NET20 || NET35 || SILVERLIGHT || PORTABLE || PORTABLE40)
|
||||
|
||||
@@ -41,6 +41,9 @@ namespace Newtonsoft.Json.Serialization
|
||||
internal bool _hasExplicitDefaultValue;
|
||||
internal object _defaultValue;
|
||||
|
||||
private string _propertyName;
|
||||
private bool _skipPropertyNameEscape;
|
||||
|
||||
// use to cache contract during deserialization
|
||||
internal JsonContract PropertyContract { get; set; }
|
||||
|
||||
@@ -48,7 +51,35 @@ namespace Newtonsoft.Json.Serialization
|
||||
/// Gets or sets the name of the property.
|
||||
/// </summary>
|
||||
/// <value>The name of the property.</value>
|
||||
public string PropertyName { get; set; }
|
||||
public string PropertyName
|
||||
{
|
||||
get { return _propertyName; }
|
||||
set
|
||||
{
|
||||
_propertyName = value;
|
||||
CalculateSkipPropertyNameEscape();
|
||||
}
|
||||
}
|
||||
|
||||
private void CalculateSkipPropertyNameEscape()
|
||||
{
|
||||
if (_propertyName == null)
|
||||
{
|
||||
_skipPropertyNameEscape = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
_skipPropertyNameEscape = true;
|
||||
foreach (char c in _propertyName)
|
||||
{
|
||||
if (!char.IsLetterOrDigit(c) && c != '_' && c != '@')
|
||||
{
|
||||
_skipPropertyNameEscape = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the type that declared this property.
|
||||
@@ -242,5 +273,13 @@ namespace Newtonsoft.Json.Serialization
|
||||
/// </summary>
|
||||
/// <value>The collection's items reference loop handling.</value>
|
||||
public ReferenceLoopHandling? ItemReferenceLoopHandling { get; set; }
|
||||
|
||||
internal void WritePropertyName(JsonWriter writer)
|
||||
{
|
||||
if (_skipPropertyNameEscape)
|
||||
writer.WritePropertyName(PropertyName, false);
|
||||
else
|
||||
writer.WritePropertyName(PropertyName);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -93,7 +93,7 @@ namespace Newtonsoft.Json.Serialization
|
||||
{
|
||||
writer.WriteStartObject();
|
||||
WriteTypeProperty(writer, contract.CreatedType);
|
||||
writer.WritePropertyName(JsonTypeReflector.ValuePropertyName);
|
||||
writer.WritePropertyName(JsonTypeReflector.ValuePropertyName, false);
|
||||
|
||||
JsonWriter.WriteValue(writer, contract.TypeCode, value);
|
||||
|
||||
@@ -271,7 +271,7 @@ namespace Newtonsoft.Json.Serialization
|
||||
TraceWriter.Trace(TraceLevel.Info, JsonPosition.FormatMessage(null, writer.Path, "Writing object reference to Id '{0}' for {1}.".FormatWith(CultureInfo.InvariantCulture, reference, value.GetType())), null);
|
||||
|
||||
writer.WriteStartObject();
|
||||
writer.WritePropertyName(JsonTypeReflector.RefPropertyName);
|
||||
writer.WritePropertyName(JsonTypeReflector.RefPropertyName, false);
|
||||
writer.WriteValue(reference);
|
||||
writer.WriteEndObject();
|
||||
}
|
||||
@@ -380,7 +380,7 @@ namespace Newtonsoft.Json.Serialization
|
||||
if (!CalculatePropertyValues(writer, value, contract, member, property, out memberContract, out memberValue))
|
||||
continue;
|
||||
|
||||
writer.WritePropertyName(property.PropertyName);
|
||||
property.WritePropertyName(writer);
|
||||
SerializeValue(writer, memberValue, memberContract, property, contract, member);
|
||||
}
|
||||
catch (Exception ex)
|
||||
@@ -413,7 +413,7 @@ namespace Newtonsoft.Json.Serialization
|
||||
{
|
||||
if (ShouldWriteReference(memberValue, property, memberContract, contract, member))
|
||||
{
|
||||
writer.WritePropertyName(property.PropertyName);
|
||||
property.WritePropertyName(writer);
|
||||
WriteReference(writer, memberValue);
|
||||
return false;
|
||||
}
|
||||
@@ -460,7 +460,7 @@ namespace Newtonsoft.Json.Serialization
|
||||
if (TraceWriter != null && TraceWriter.LevelFilter >= TraceLevel.Verbose)
|
||||
TraceWriter.Trace(TraceLevel.Verbose, JsonPosition.FormatMessage(null, writer.Path, "Writing object reference Id '{0}' for {1}.".FormatWith(CultureInfo.InvariantCulture, reference, type)), null);
|
||||
|
||||
writer.WritePropertyName(JsonTypeReflector.IdPropertyName);
|
||||
writer.WritePropertyName(JsonTypeReflector.IdPropertyName, false);
|
||||
writer.WriteValue(reference);
|
||||
}
|
||||
|
||||
@@ -471,7 +471,7 @@ namespace Newtonsoft.Json.Serialization
|
||||
if (TraceWriter != null && TraceWriter.LevelFilter >= TraceLevel.Verbose)
|
||||
TraceWriter.Trace(TraceLevel.Verbose, JsonPosition.FormatMessage(null, writer.Path, "Writing type name '{0}' for {1}.".FormatWith(CultureInfo.InvariantCulture, typeName, type)), null);
|
||||
|
||||
writer.WritePropertyName(JsonTypeReflector.TypePropertyName);
|
||||
writer.WritePropertyName(JsonTypeReflector.TypePropertyName, false);
|
||||
writer.WriteValue(typeName);
|
||||
}
|
||||
|
||||
@@ -662,7 +662,7 @@ namespace Newtonsoft.Json.Serialization
|
||||
{
|
||||
WriteTypeProperty(writer, values.GetType());
|
||||
}
|
||||
writer.WritePropertyName(JsonTypeReflector.ArrayValuesPropertyName);
|
||||
writer.WritePropertyName(JsonTypeReflector.ArrayValuesPropertyName, false);
|
||||
}
|
||||
|
||||
if (contract.ItemContract == null)
|
||||
@@ -732,7 +732,7 @@ To fix this error either change the environment to be fully trusted, change the
|
||||
if (!CalculatePropertyValues(writer, value, contract, member, property, out memberContract, out memberValue))
|
||||
continue;
|
||||
|
||||
writer.WritePropertyName(property.PropertyName);
|
||||
property.WritePropertyName(writer);
|
||||
SerializeValue(writer, memberValue, memberContract, property, contract, member);
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
||||
Reference in New Issue
Block a user