我有一个如下结构的JSON。我使用JSONPath表达式只过滤值。如何过滤并只输出那些值的前三个字符与给定的三个字符匹配的值?
[
{
"firstName": "John",
"lastName": "doe",
"age": 26,
"address": {
"streetAddress": "naist street",
"city": "Nara",
"postalCode": "630-0192"
},
"phoneNumbers": [
{
"model": "iPhone",
"number": "0123-4567-8888"
},
{
"model": "iPhoneX",
"number": "0123-4567-8910"
}
]
},
{
"firstName": "Ram",
"lastName": "Pavan",
"age": 29,
"address": {
"streetAddress": "Delhi street",
"city": "Noid",
"postalCode": "222-211"
},
"phoneNumbers": [
{
"model": "iPhone 6S",
"number": "43212-888-9998"
},
{
"model": "iPhone 14",
"number": "84848-337-83330"
}
]
}
]
在上面的JSON示例中,我使用以下JSONPath表达式成功地过滤了所有以model
为键的值:
$..model
正如预期,输出为所有型号的列表:
[
"iPhone",
"Samsung",
"iPhone 6S",
"iPhone 14"
]
这很好,但是如果我只过滤那些以给定字符集iph
或iPhone
开头的值,那么我们应该如何编写表达式呢?在这种情况下,期望的输出应该如下所示:
[
"iPhone",
"iPhone 6S",
"iPhone 14"
]
1条答案
按热度按时间31moq8wy1#
经过一些尝试,我尝试将Javascript
slice()
方法应用于值,但在此之前,我还必须向上一级,然后使用过滤器?
和slice
组合过滤该父级下的元素。下面是适用于我的代码:
Slice方法有两个参数(start,end)。在本例中,起始索引是0,结束索引是3,应该等于"iph"。
所需输出: