JsonPath表达式过滤属性并选择部分记录?

时间:2015-08-20 21:01:27

标签: java json jsonpath

以下是我正在使用的详细信息:

<dependency>
  <groupId>com.jayway.jsonpath</groupId>
  <artifactId>json-path</artifactId>
  <version>2.0.0</version>
</dependency>

我有以下示例JSON。

[
    {
        "something": "who cares",
        "job_name":"my-long-job-name-that-ends-in-box",
        "some_number": 1
    },
    {
        "something": "who care here either",
        "job_name": "my-long-job-name-that-ends-in-something-else",
        "some_number": 2
    }
]

到目前为止,我可以匹配以box结尾的记录:

$.[?(@.job_name =~ /^.+box/i )]

查找job_namebox结尾的所有对象,并转储整个记录。这没关系,但我想指定要返回的属性子集,而不是有时返回整个对象。

在我的真实数据中有几十个字段,我只需要一次看到其中一些字段。

$.[?(@.job_name =~ /^.+box/i )].job_number只会返回job_number

使用上面的示例数据,如何返回job_namesome_number而不是something

如何修改JsonPath表达式以仅返回我想要查看的字段。

1 个答案:

答案 0 :(得分:1)

解决方案

经过对文档的更多试验和错误以及我还没有尝试过的另一件事我找到了解决方案:

$.[?(@.job_name =~ /^.+box/i )].['job_name','some_number']

将仅返回Map,仅job_namesome_number作为示例数据中一条记录的关键字。