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

如何使用带逻辑OR条件的JSONPath获取目标字段的对应值

如何使用带逻辑OR条件的JSONPath获取目标字段的对应值

我懂你的痛点!你已经离目标很近了,就是差最后一步把值单独拎出来对吧?不同的JSONPath实现(比如Jayway JsonPath、Goessner的原始语法、JsonPath-Plus这些)细节上会有点差异,我给你几个能直接拿到目标值的实用方案:

方案1:利用短路逻辑直接取值(推荐)

很多现代JSONPath实现支持||的短路求值,这个写法最简洁,直接优先取meter的值,不存在就自动取crew的值:

$.meter || $.crew

针对你的第一个JSON会返回"A123",第二个就返回"XMS-858",完全是你要的纯值。

方案2:基于你之前的写法优化

你之前用$.['meter', 'crew']拿到了键值对,那只要再加个.*就能提取所有值,再用[0]取第一个有效结果就行:

$.['meter', 'crew'].*[0]

这个写法兼容性不错,大部分JSONPath工具都支持。比如针对你的第二个JSON,$.['meter', 'crew']返回{"crew": "XMS-858"},加上.*就变成["XMS-858"],最后[0]就拿到纯字符串值了。

方案3:结合过滤表达式直接取值

如果你的JSONPath支持过滤后链式取值,也可以这么写:

$.[?(@.meter)].meter || $.[?(@.crew)].crew

逻辑是先过滤出存在meter的对象,然后取它的meter值;如果没有,就过滤出存在crew的对象再取crew值。

你可以根据自己正在使用的JSONPath工具来选最适配的写法,我自己平时用方案1最多,简洁又直接。

备注:内容来源于stack exchange,提问作者kvtral

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.20 07:44:51