JsonNode.HasProperty遇属性值为null时返回false的问题咨询
解决JsonNode.HasProperty() 无法识别值为null的属性问题
测试JSON如下:
{ "id": 3, "name": null }
当调用_node.HasProperty("name")返回false时,可通过以下方式解决:
使用
JsonObject.ContainsKey()替代HasProperty():
JsonNode的AsObject()方法可转为JsonObject,它的ContainsKey()会严格检查键是否存在,无论对应值是否为null。示例代码:bool hasName = _node.AsObject().ContainsKey("name"); // 会返回true封装自定义判断方法:
如果要在包装类里统一处理,可实现自己的属性存在性检查逻辑:public bool HasProperty(string propertyName) { var jsonObject = _node.AsObject(); return jsonObject != null && jsonObject.ContainsKey(propertyName); }
原因说明
HasProperty()方法的默认逻辑是同时检查属性存在和值不为null,但根据JSON规范,键存在且值为null属于合法的对象成员,因此需要用ContainsKey()来准确判断键的存在性。
内容的提问来源于stack exchange,提问作者Thomas
相关产品推荐
相关产品推荐

