UPDATE
この問題はrelease 10.0.1(2017年3月)で修正されたことが表示されます。
これはJson.NetのRegexConverter
クラスのバグのように見えます。あなたが見ることができるように
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
if (reader.TokenType == JsonToken.StartObject)
{
return ReadRegexObject(reader, serializer);
}
if (reader.TokenType == JsonToken.String)
{
return ReadRegexString(reader);
}
throw JsonSerializationException.Create(reader, "Unexpected token when reading Regex.");
}
が、それは期待したり、読者からのヌルのトークンをチェックされていないので、JsonSerializationException
スローラインに至るまで低下している:ReadJson
方法は次のようになります。
このような質問にリンクしてreport an issueにリンクしてください。
回避策として、あなたはRegexConverter
から独自のコンバータを導出し、チェックを追加することができます。
public class ImprovedRegexConverter : RegexConverter
{
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
if (reader.TokenType == JsonToken.Null)
{
return null;
}
return base.ReadJson(reader, objectType, existingValue, serializer);
}
}
あなたはデシリアライズすると、このようなDeserializeObject
方法にカスタムコンバータのインスタンスを渡します
:
SimpleClassWithRegex obj =
JsonConvert.DeserializeObject<SimpleClassWithRegex>(json, new ImprovedRegexConverter());
Alterntatively、あなたはこのようなあなたのRegex
クラスのメンバーに[JsonConverter]
属性を追加することができます
class SimpleClassWithRegex
{
[JsonConverter(typeof(ImprovedRegexConverter))]
public Regex RegProp { get; set; }
}
フィドル:https://dotnetfiddle.net/BIqmd6
ありがとうございました。私はバグレポートを提出することも検討しなければならない。 –