以下是我正在使用的详细信息:
<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_name
以box
结尾的所有对象,并转储整个记录。这没关系,但我想指定要返回的属性子集,而不是有时返回整个对象。
在我的真实数据中有几十个字段,我只需要一次看到其中一些字段。
$.[?(@.job_name =~ /^.+box/i )].job_number
只会返回job_number
。
使用上面的示例数据,如何返回job_name
和some_number
而不是something
?
JsonPath
表达式以仅返回我想要查看的字段。答案 0 :(得分:1)
经过对文档的更多试验和错误以及我还没有尝试过的另一件事我找到了解决方案:
$.[?(@.job_name =~ /^.+box/i )].['job_name','some_number']
将仅返回Map
,仅job_name
和some_number
作为示例数据中一条记录的关键字。