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

能否使用JSONPath同时过滤数据并筛选保留指定属性生成结果?

能否用JSONPath同时实现数据过滤与指定属性选择?

可以实现,不过具体语法要根据你使用的JSONPath工具版本来定,主流的现代JSONPath实现(比如Jayway JsonPath、JSONPath Plus)都支持构造新对象的语法,能同时完成过滤和保留指定属性的需求。

先回顾你的示例JSON数据:

{
    "firstName": "John",
    "lastName": "doe",
    "age": 26,
    "address": {
        "streetAddress": "naist street",
        "city": "Nara",
        "postalCode": "630-0192"
    },
    "phoneNumbers": [
        {
            "type": "iPhone",
            "number": "0123-4567-8888"
        },
        {
            "type": "home",
            "number": "0123-4567-8910"
        }
    ]
}

1. 使用Jayway JsonPath(Java生态常用)

使用以下表达式可以直接生成包含number属性的对象数组:

$.phoneNumbers[?(@.type == 'iPhone')].{number: @.number}

执行后得到的结果就是你想要的:

[
  {
    "number": "0123-4567-8888"
  }
]

2. 使用JSONPath Plus(JavaScript生态常用)

对应的表达式为:

$..phoneNumbers[?(@.type == 'iPhone')].{number: @.number}

执行后同样会输出目标结果。

注意事项

一些早期的基础JSONPath实现(比如原始的Stefan Goessner版本)不支持构造新对象的语法,这类情况下只能先过滤出符合条件的完整对象,再通过后续代码逻辑提取指定属性来构造目标结构。但目前大多数主流工具库都已经支持上述构造语法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 07:10:15