Newtonsoft.Json.Linq默认不会将json值为null和undefined转换为null导致链式取值时抛异常
例如
1 | { |
这样的json,使用 JObject.Parse()
或者 JsonConvert.DeserializeObject()
后,直接取name的值不进行显式转换,得到的值会是 Newtonsoft.Json.JValue
的空实例,而不是null。这导致如果需要使用 ?[]
进行链式取值时(例如 (string?)json["data"]?["cards"]?[0]?["names"]?[0]
的names为null )会抛出异常,因为中间并没有显式转换过,中间值也就不是null,null 条件运算符( ?[]
)也就没用了。
解决办法就只能遍历值,把是null的和是undefined的删去。
1 | public static class JObjectExtensions |
参考: c# - JSON.NET serialize JObject while ignoring null properties - Stack Overflow
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Decmoe47's Blog!
评论