使用Json.Net进行反序列化时设置requried字段

时间:2014-05-15 15:49:21

标签: c# json json.net deserialization json-deserialization

我有一个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对象

  1. 对象必须具有属性Foo.A
  2. Foo.B是可选的
  3. Foo.A.C是可选的
  4. 我尝试使用MissingMemberHandling = MissingMemberHandling.Error作为我的JsonSerializerSettings的一部分。但即使Foo.B丢失,也会引发错误。

1 个答案:

答案 0 :(得分:2)

如果您希望某些属性是可选的并且某些属性是必需的,那么实现此目的的最简单方法是使用[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; }
}