我有一个用户类,比如
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 中不可用。这仍然仅使用 on 用户名进行序列化。 上面的JSON和类就是一个例子,有相当多的成员让我单独检查它们! 我想确保 JSON 包含类的所有成员,如果不是,则抛出错误。
但我似乎找不到办法。我在这里错过了什么?
如果您使用 Newtonsoft(您可以使用Install-Package Newtonsoft.JSON安装( - 您可以设置设置的MissingMemberHandling属性;
JsonSerializerSettings settings = new JsonSerializerSettings();
settings.MissingMemberHandling = MissingMemberHandling.Error;
然后通过它;
var userObj = JsonConvert.DeserializeObject<User>(jsonInput, settings);
如果必须改用数据协定,则可以使用必需的属性修饰 User 对象;
[DataMember(IsRequired=true)]
public string? RequiredProperty { get; set; }