-Fixed deserializing null Regex

This commit is contained in:
James Newton-King
2016-07-18 21:46:07 +12:00
parent 0546ded719
commit b83e1fab4c
2 changed files with 22 additions and 7 deletions
@@ -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<SimpleClassWithRegex>(json);
Assert.AreEqual(null, obj.RegProp);
}
}
}
@@ -123,14 +123,14 @@ namespace Newtonsoft.Json.Converters
/// <returns>The object value.</returns>
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.");