使用JSONPath提取指定条件的JSON数据问题咨询
JSONPath提取特定label字段的解决方案
先假设你的目标JSON数组示例如下:
[ {"key": "value1", "label": "Manual Entry"}, {"key": "value2", "label": "Auto Generated"}, {"key": "value2", "label": "Auto Sync"}, {"key": "value3", "label": "User Input"} ]
需求1:提取key等于value2对应的label
使用以下JSONPath表达式即可直接获取目标值:
$.[?(@.key == 'value2')].label
执行后会返回:["Auto Generated", "Auto Sync"]
需求2:提取以Auto开头的label
你之前用的$.[?(@.label =~ /^Auto.*/)]未生效,大概率是因为不同JSONPath引擎的正则语法支持存在差异,这里给两种可靠的解决方式:
方式1:使用正则匹配(兼容主流引擎如Jayway)
确保正则表达式的写法符合引擎要求,正确表达式如下:
$.[?(@.label =~ /^Auto.*/)]
注意:如果你的JSONPath引擎要求正则用单引号包裹,可改为:
$.[?(@.label =~ '^Auto.*')]
方式2:使用startsWith函数(兼容性更强)
如果正则匹配仍有问题,建议用字符串起始匹配函数,兼容性更好:
$.[?(@.label.startsWith('Auto'))].label
执行后会返回:["Auto Generated", "Auto Sync"]
内容的提问来源于stack exchange,提问作者samir patle
相关产品推荐
相关产品推荐

