public void ResolveProperties_IgnoreStatic() { var resolver = new DefaultContractResolver(); var contract = (JsonObjectContract)resolver.ResolveContract(typeof(NumberFormatInfo)); Assert.IsFalse(contract.Properties.Any(c => c.PropertyName == "InvariantInfo")); }
public void SerializeUsingInternalConverter() { DefaultContractResolver contractResolver = new DefaultContractResolver(); JsonObjectContract contract = (JsonObjectContract)contractResolver.ResolveContract(typeof(KeyValuePair<string, int>)); Assert.AreEqual(typeof(KeyValuePairConverter), contract.InternalConverter.GetType()); IList<KeyValuePair<string, int>> values = new List<KeyValuePair<string, int>> { new KeyValuePair<string, int>("123", 123), new KeyValuePair<string, int>("456", 456) }; string json = JsonConvert.SerializeObject(values, Formatting.Indented); StringAssert.AreEqual(@"[ { ""Key"": ""123"", ""Value"": 123 }, { ""Key"": ""456"", ""Value"": 456 } ]", json); IList<KeyValuePair<string, int>> v2 = JsonConvert.DeserializeObject<IList<KeyValuePair<string, int>>>(json); Assert.AreEqual(2, v2.Count); Assert.AreEqual("123", v2[0].Key); Assert.AreEqual(123, v2[0].Value); Assert.AreEqual("456", v2[1].Key); Assert.AreEqual(456, v2[1].Value); }
public void DeserializeDataMemberClassWithNoDataContract() { var resolver = new DefaultContractResolver(); var contract = (JsonObjectContract)resolver.ResolveContract(typeof(AddressWithDataMember)); Assert.AreEqual("AddressLine1", contract.Properties[0].PropertyName); }
public void AddPropertyIncludesPrivateImplementations() { var value = new PrivateImplementationBClass { OverriddenProperty = "OverriddenProperty", PropertyA = "PropertyA", PropertyB = "PropertyB" }; var resolver = new DefaultContractResolver(); var contract = (JsonObjectContract) resolver.ResolveContract(value.GetType()); Assert.AreEqual(3, contract.Properties.Count); Assert.IsTrue(contract.Properties.Contains("OverriddenProperty"), "Contract is missing property 'OverriddenProperty'"); Assert.IsTrue(contract.Properties.Contains("PropertyA"), "Contract is missing property 'PropertyA'"); Assert.IsTrue(contract.Properties.Contains("PropertyB"), "Contract is missing property 'PropertyB'"); }
static void CountingLockTest() { Console.WriteLine("\n Newtonsoft.Json.Serialization.DefaultContractResolver"); var resolver = new Newtonsoft.Json.Serialization.DefaultContractResolver(); WriteProps((JsonObjectContract)resolver.ResolveContract(typeof(CountingLock))); Console.WriteLine("\n Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver"); var r = new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver(); WriteProps((JsonObjectContract)r.ResolveContract(typeof(CountingLock))); Console.WriteLine("\n System.Net.Http.Formatting.JsonContractResolver"); var resolv = new System.Net.Http.Formatting.JsonContractResolver(new Formatter()); WriteProps((JsonObjectContract)resolv.ResolveContract(typeof(CountingLock))); }
public void SerializeUsingInternalConverter() { DefaultContractResolver contractResolver = new DefaultContractResolver(); JsonObjectContract contract = (JsonObjectContract) contractResolver.ResolveContract(typeof (KeyValuePair<string, int>)); Assert.AreEqual(typeof(KeyValuePairConverter), contract.InternalConverter.GetType()); IList<KeyValuePair<string, int>> values = new List<KeyValuePair<string, int>> { new KeyValuePair<string, int>("123", 123), new KeyValuePair<string, int>("456", 456) }; string json = JsonConvert.SerializeObject(values, Formatting.Indented); Console.WriteLine(json); }
public void CustomOverrideCreator() { var resolver = new DefaultContractResolver(); var contract = (JsonObjectContract)resolver.ResolveContract(typeof(MultipleParamatrizedConstructorsJsonConstructor)); bool ensureCustomCreatorCalled = false; contract.OverrideCreator = args => { ensureCustomCreatorCalled = true; return new MultipleParamatrizedConstructorsJsonConstructor((string) args[0], (int) args[1]); }; #pragma warning disable 618 Assert.IsNull(contract.OverrideConstructor); #pragma warning restore 618 var o = JsonConvert.DeserializeObject<MultipleParamatrizedConstructorsJsonConstructor>("{Value:'value!', Age:1}", new JsonSerializerSettings { ContractResolver = resolver }); Assert.AreEqual("value!", o.Value); Assert.AreEqual(1, o.Age); Assert.IsTrue(ensureCustomCreatorCalled); }
public void OverrideCreator() { var resolver = new DefaultContractResolver(); var contract = (JsonObjectContract)resolver.ResolveContract(typeof(MultipleParamatrizedConstructorsJsonConstructor)); Assert.IsNull(contract.DefaultCreator); Assert.IsNotNull(contract.OverrideCreator); #pragma warning disable 618 Assert.AreEqual(contract.OverrideConstructor, typeof(MultipleParamatrizedConstructorsJsonConstructor).GetConstructor(new[] { typeof(string), typeof(int) })); #pragma warning restore 618 Assert.AreEqual(2, contract.CreatorParameters.Count); Assert.AreEqual("Value", contract.CreatorParameters[0].PropertyName); Assert.AreEqual("Age", contract.CreatorParameters[1].PropertyName); #pragma warning disable 618 contract.OverrideConstructor = null; #pragma warning restore 618 Assert.IsNull(contract.OverrideCreator); }
public void ParametrizedCreator() { var resolver = new DefaultContractResolver(); var contract = (JsonObjectContract)resolver.ResolveContract(typeof(PublicParametizedConstructorWithPropertyNameConflictWithAttribute)); Assert.IsNull(contract.DefaultCreator); Assert.IsNotNull(contract.ParametrizedCreator); #pragma warning disable 618 Assert.AreEqual(contract.ParametrizedConstructor, typeof(PublicParametizedConstructorWithPropertyNameConflictWithAttribute).GetConstructor(new[] { typeof(string) })); #pragma warning restore 618 Assert.AreEqual(1, contract.CreatorParameters.Count); Assert.AreEqual("name", contract.CreatorParameters[0].PropertyName); #pragma warning disable 618 contract.ParametrizedConstructor = null; #pragma warning restore 618 Assert.IsNull(contract.ParametrizedCreator); }