From b83e1fab4c3eb5074547bece3c1bfbefa2ac0a41 Mon Sep 17 00:00:00 2001 From: James Newton-King Date: Mon, 18 Jul 2016 21:46:07 +1200 Subject: [PATCH] -Fixed deserializing null Regex --- .../Converters/RegexConverterTests.cs | 15 +++++++++++++++ Src/Newtonsoft.Json/Converters/RegexConverter.cs | 14 +++++++------- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/Src/Newtonsoft.Json.Tests/Converters/RegexConverterTests.cs b/Src/Newtonsoft.Json.Tests/Converters/RegexConverterTests.cs index 46da21e0..8c58ac7d 100644 --- a/Src/Newtonsoft.Json.Tests/Converters/RegexConverterTests.cs +++ b/Src/Newtonsoft.Json.Tests/Converters/RegexConverterTests.cs @@ -232,5 +232,20 @@ namespace Newtonsoft.Json.Tests.Converters Assert.AreEqual("", newRegex.Regex.ToString()); Assert.AreEqual(RegexOptions.None, newRegex.Regex.Options); } + + public class SimpleClassWithRegex + { + public Regex RegProp { get; set; } + } + + [Test] + public void DeserializeNullRegex() + { + string json = JsonConvert.SerializeObject(new SimpleClassWithRegex { RegProp = null }); + Assert.AreEqual(@"{""RegProp"":null}", json); + + SimpleClassWithRegex obj = JsonConvert.DeserializeObject(json); + Assert.AreEqual(null, obj.RegProp); + } } } \ No newline at end of file diff --git a/Src/Newtonsoft.Json/Converters/RegexConverter.cs b/Src/Newtonsoft.Json/Converters/RegexConverter.cs index 1d6de625..bfbea4c2 100644 --- a/Src/Newtonsoft.Json/Converters/RegexConverter.cs +++ b/Src/Newtonsoft.Json/Converters/RegexConverter.cs @@ -123,14 +123,14 @@ namespace Newtonsoft.Json.Converters /// The object value. public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { - if (reader.TokenType == JsonToken.StartObject) + switch (reader.TokenType) { - return ReadRegexObject(reader, serializer); - } - - if (reader.TokenType == JsonToken.String) - { - return ReadRegexString(reader); + case JsonToken.StartObject: + return ReadRegexObject(reader, serializer); + case JsonToken.String: + return ReadRegexString(reader); + case JsonToken.Null: + return null; } throw JsonSerializationException.Create(reader, "Unexpected token when reading Regex.");