我有一个如下的Foo课
public class Foo
{
public ClassA A {get;set;}
public string B {get;set;}
}
public class ClassA
{
public string C {get;set;}
}
当我得到一个Json字符串(例如fooJson)时,我想在满足以下条件的情况下将其反序列化为Foo对象
该对象必须具有属性Foo.A
Foo.B是可选的
Foo.A.C是可选的
我尝试将MissingMemberHandling = MissingMemberHandling.Error用作我的JsonSerializerSettings的一部分。但这即使缺少Foo.B也会引发错误。
最佳答案
如果您希望某些属性是可选的而某些属性是必需的,则实现此目的的最简单方法是使用[JsonProperty]
属性标记您的类,该属性指示哪些属性是必需的,例如:
public class Foo
{
[JsonProperty(Required = Required.Always)]
public ClassA A { get; set; }
public string B { get; set; }
}
public class ClassA
{
public string C { get; set; }
}