You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Newtonsoft Json.NET中JsonPath查询null属性无法匹配缺失字段解决方法

问题原因

这个问题确实是由查询语句中的null判断逻辑触发的,根源是Newtonsoft.Json(Json.NET)的JsonPath实现和多数在线测试工具的实现存在差异:

  • 多数在线JsonPath工具会将「不存在对应属性」和「属性值为null」两种情况都判定为== null
  • Json.NET的JsonPath解析器对二者做了严格区分:@['name'] == null仅能匹配显式将name字段赋值为null的对象,不会匹配根本不包含name字段的对象(也就是你示例里id为2的对象)

解决方案

直接修改JsonPath语句即可实现需求,不需要调整其他逻辑,推荐以下两种写法:

写法1(精准匹配需求,兼容性最好)

如果你只需要匹配「没有name字段」或者「name值为abc」的对象,用下面的语句:

$[?(!@.hasOwnProperty('name') || @['name'] == 'abc')]

写法2(覆盖更多空值场景)

如果你同时需要兼容「name字段显式为null」的场景,可以扩展条件:

$[?(@['name'] == 'abc' || !@.hasOwnProperty('name') || @['name'] == null)]

验证说明

替换查询语句后,Json.NET的SelectTokens方法返回结果就会和你预期一致,同时符合你将JsonPath放在配置文件动态调用的要求,不需要修改业务代码。

内容的提问来源于stack exchange,提问作者maxmoore14

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 14:54:01