C# 数据合同Json序列化程序 如果缺少成员,则读取对象不会引发错误



我有一个用户类,比如

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; }

最新更新