JsonConvert.DeserializeObject 将 null 转换为空对象



对我来说似乎是一个错误。

var obj = JsonConvert.DeserializeObject<dynamic>("{"arr": [{"prop1": null}]}");
var prop1 = ob.arr[0].prop1; // has {} value
var test = ob.arr[0].prop1?.prop2; //causes error 

'Newtonsoft.Json.Linq.JValue' does not contain a definition for 'prop2'

ob.arr[0].prop1 不是空的(它是一个非空的空JValue(,因此空合并运算符不会停止访问链。

相反,ob.arr[0].prop1.Value为空,因此您可以使用:

var test = obj.arr[0].prop1.Value?.prop2;

var test = obj.arr[0].prop1.HasValues
  ? obj.arr[0].prop1.prop2 // this will be null in your case
  : null;

相关内容

  • 没有找到相关文章

最新更新