C# 在c中使用JsonConvert反序列化对象时处理未定义的值#

C# 在c中使用JsonConvert反序列化对象时处理未定义的值#,c#,json,json-deserialization,jsonconvert,C#,Json,Json Deserialization,Jsonconvert,我有一个Json序列化配置,在这个配置中,我需要使用 JsonConvert.DeserializeObject(jsonConfig) 到我的班级名单。 在jsonConfig中,可能缺少一些属性,我得到了如下异常 [JsonProperty(NullValueHandling = NullValueHandling.Ignore)] public int? someProperty { get; set; } 在JSON中找不到必需的属性“xxx”。路径 “[0].yyy” 因此,在反

我有一个
Json
序列化配置,在这个配置中,我需要使用

JsonConvert.DeserializeObject(jsonConfig)

到我的班级名单。 在
jsonConfig
中,可能缺少一些属性,我得到了如下异常

 [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 public int? someProperty { get; set; }
在JSON中找不到必需的属性“xxx”。路径 “[0].yyy”


因此,在反序列化
c#
中的对象时,是否有任何方法可以处理未定义的值?

未定义的
不是有效的json值,即使它在javascript中有效。请查收

  • 对于json,使用null而不是
    undefined:{“something”:null}

您需要在对象模型类中将这些属性设置为可为null,如下所示

 [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 public int? someProperty { get; set; }
此外,如果在反序列化时类中缺少属性本身,则可以执行以下操作:

 JsonSerializerSettings settings = new JsonSerializerSettings();
 settings.MissingMemberHandling = MissingMemberHandling.Ignore;

 var deserializedObj = JsonConvert.DeserializeObject<MyModelClass>(jsonConfig, settings);
JsonSerializerSettings设置=新建JsonSerializerSettings();
settings.MissingMemberHandling=MissingMemberHandling.Ignore;
var deserializedObj=JsonConvert.DeserializeObject(jsonConfig,settings);

谢谢Rahul。此NullValueHandling仅适用于具有null value权限的属性。如果属性本身丢失意味着有任何方法可以处理,或者我们需要任何自定义JsonConverter来处理未定义的值吗?它对我不起作用,但它仍引发相同的异常请更新您的问题并添加您的模型类。如果您的模型中有标记为的属性,Json.Net将仅引发此异常必需,例如
[JsonProperty(required=required.Always)]
。因此,显而易见的解决方案是删除需求。