-Added IValueProvider, ReflectionValueProvider, DynamicValueProvider -Added Dynamic.snk -Added Required enum with options Default, AllowNull and Always -Added serialization event support to Silverlight version -Added Converter to JsonProperty for JsonConverter -Changed IsRequired to Required enum -Changed schema generator to allow for Required enum options -Changed Silverlight project version to Silverlight 3 -Improved error message when JSON array encountered for object and vice-versa when deserializing -Improved error message for converting types when deserializing -Improved error message from getting and setting properties when serializing and deserializing -Fixed empty string being converted to null when deserializing -Removed dependency on Entity Framework and LINQ to SQL assemblies
71 lines
2.5 KiB
C#
71 lines
2.5 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using Newtonsoft.Json.Tests.TestObjects;
|
|
using NUnit.Framework;
|
|
|
|
namespace Newtonsoft.Json.Tests.Serialization
|
|
{
|
|
public class DefaultValueHandlingTests : TestFixtureBase
|
|
{
|
|
[Test]
|
|
public void SerializeInvoice()
|
|
{
|
|
Invoice invoice = new Invoice
|
|
{
|
|
Company = "Acme Ltd.",
|
|
Amount = 50.0m,
|
|
Paid = false,
|
|
FollowUpDays = 30,
|
|
FollowUpEmailAddress = string.Empty,
|
|
PaidDate = null
|
|
};
|
|
|
|
string included = JsonConvert.SerializeObject(invoice,
|
|
Formatting.Indented,
|
|
new JsonSerializerSettings { });
|
|
|
|
// {
|
|
// "Company": "Acme Ltd.",
|
|
// "Amount": 50.0,
|
|
// "Paid": false,
|
|
// "PaidDate": null,
|
|
// "FollowUpDays": 30,
|
|
// "FollowUpEmailAddress": ""
|
|
// }
|
|
|
|
string ignored = JsonConvert.SerializeObject(invoice,
|
|
Formatting.Indented,
|
|
new JsonSerializerSettings { DefaultValueHandling = DefaultValueHandling.Ignore });
|
|
|
|
// {
|
|
// "Company": "Acme Ltd.",
|
|
// "Amount": 50.0
|
|
// }
|
|
|
|
Console.WriteLine(included);
|
|
Console.WriteLine(ignored);
|
|
}
|
|
|
|
[Test]
|
|
public void DefaultValueAttributeTest()
|
|
{
|
|
string json = JsonConvert.SerializeObject(new DefaultValueAttributeTestClass(),
|
|
Formatting.None, new JsonSerializerSettings { DefaultValueHandling = DefaultValueHandling.Ignore });
|
|
Assert.AreEqual(@"{""TestField1"":0,""TestProperty1"":null}", json);
|
|
|
|
json = JsonConvert.SerializeObject(new DefaultValueAttributeTestClass { TestField1 = int.MinValue, TestProperty1 = "NotDefault" },
|
|
Formatting.None, new JsonSerializerSettings { DefaultValueHandling = DefaultValueHandling.Ignore });
|
|
Assert.AreEqual(@"{""TestField1"":-2147483648,""TestProperty1"":""NotDefault""}", json);
|
|
|
|
json = JsonConvert.SerializeObject(new DefaultValueAttributeTestClass { TestField1 = 21, TestProperty1 = "NotDefault" },
|
|
Formatting.None, new JsonSerializerSettings { DefaultValueHandling = DefaultValueHandling.Ignore });
|
|
Assert.AreEqual(@"{""TestProperty1"":""NotDefault""}", json);
|
|
|
|
json = JsonConvert.SerializeObject(new DefaultValueAttributeTestClass { TestField1 = 21, TestProperty1 = "TestProperty1Value" },
|
|
Formatting.None, new JsonSerializerSettings { DefaultValueHandling = DefaultValueHandling.Ignore });
|
|
Assert.AreEqual(@"{}", json);
|
|
}
|
|
}
|
|
} |