我有一个类似
的用户类public class User
{
public string UserName {get;set;}
public string Application {get;set;}
}
现在,我正在使用它
var jsonSerializer = new DataContractJsonSerializer(typeof(User));
var objApp = (User)jsonSerializer.ReadObject(new MemoryStream(Encoding.Unicode.GetBytes(JsonInput)));
但是我的JSON JsonInput并不包含这两个值,例如JSON中没有Application。这仍然仅使用UserName序列化。 上面的JSON和类是一个例子,我有很多成员可以单独检查它们! 我想确保,JSON包含该类的所有成员,如果没有,则抛出错误。
但我似乎无法找到方法。我在这里缺少什么?
答案 0 :(得分:2)
如果您使用Newtonsoft(可以使用 Install-Package Newtonsoft.Json 安装) - 您可以设置设置的 MissingMemberHandling 属性;
JsonSerializerSettings settings = new JsonSerializerSettings();
settings.MissingMemberHandling = MissingMemberHandling.Error;
然后传递它;
var userObj = JsonConvert.DeserializeObject<User>(jsonInput, settings);
如果必须改为使用Datacontract,则可以使用必需的属性修饰User对象;
[DataMember(IsRequired=true)]
public string? RequiredProperty { get; set; }