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

时间:2019-09-19 07:37:45

标签: c# json json-deserialization jsonconvert

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

反序列化对象。

JsonConvert.DeserializeObject<>(jsonConfig)

到Myclass列表。 在jsonConfig中,可能会丢失一些属性,如下所示。

  

在JSON中找不到必需的属性“ xxx”。路径   '[0] .yyy'

那么在c#中反序列化对象时,有什么方法可以处理未定义的值?

2 个答案:

答案 0 :(得分:0)

undefined不是有效的json值,即使它在javascript中也有效。请检查https://api.jquery.com/jQuery.parseJSON/

  • 对于json,请使用null代替undefined: { "something": null }

答案 1 :(得分:0)

您需要在对象模型类中使这些属性nullable如下所示。

 [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 public int? someProperty { get; set; }

如果反序列化时类本身缺少属性本身,则可以执行以下操作:

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

 var deserializedObj = JsonConvert.DeserializeObject<MyModelClass>(jsonConfig, settings);