If you want some properties to be optional and some required, the easiest way to achieve this is to mark up your classes with [JsonProperty]
attributes indicating which properties are required, e.g.:
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; }
}