从 JSONPath 表达式中检索父值
Retrieving parent values from a JSONPath expression
我需要像这样从 JSON 中提取一些值...
{
"array": [{
"name": "aaaa",
"alt_name": "alt_aaa",
"data": "2015-03-17",
"subArraycore": [{
"codname": "codname_xxx",
"version": "3.0.0"
}]
}, {
"name": "bbb",
"alt_name": "alt_bbb",
"data": "2015-05-17",
"subArraycore": [{
"codname": "codname_xxx",
"version": "3.1.0"
}]
}, {
"name": "ccc",
"alt_name": "alt_ccc",
"data": "2015-10-17",
"subArraycore": [{
"codname": "codname_xxx",
"version": "3.2.0"
}]
}, {
"name": "ddd",
"alt_name": "alt_ddd",
"data": "2015-05-17",
"subArraycore": [{
"codname": "codname_xxx",
"version": "3.1.0"
}]
}, {
"name": "eee",
"alt_name": "alt_eee",
"data": "2015-10-17",
"subArraycore": [{
"codname": "codname_xxx",
"version": "3.2.0"
}]
}]
}
...使用JSON路径。
我需要在 subArraycore.version = "3.1.0" 时提取所有 "name" 值。
使用$..subArraycore[?(@.version=="3.1.0")]
我得到
[
{
"codname": "codname_xxx",
"version": "3.1.0"
},
{
"codname": "codname_xxx",
"version": "3.1.0"
}
]
没错,但这只是我认为必须用来获取 "name": "bbb"
和 "name": "ddd"
的 JSONPath 表达式的一部分,它们是我需要的名称值.如何修改此 JSON 路径表达式以获取它们?
提前致谢!
这可行:
$.array[?(@.subArraycore[0].version === '3.1.0')].name
Select 那些 array
成员,其中 JS 表达式 subArraycore[0].version === '3.1.0'
为真,并从那里得到 name
.
结果:
[
"bbb",
"ddd"
]
我需要像这样从 JSON 中提取一些值...
{
"array": [{
"name": "aaaa",
"alt_name": "alt_aaa",
"data": "2015-03-17",
"subArraycore": [{
"codname": "codname_xxx",
"version": "3.0.0"
}]
}, {
"name": "bbb",
"alt_name": "alt_bbb",
"data": "2015-05-17",
"subArraycore": [{
"codname": "codname_xxx",
"version": "3.1.0"
}]
}, {
"name": "ccc",
"alt_name": "alt_ccc",
"data": "2015-10-17",
"subArraycore": [{
"codname": "codname_xxx",
"version": "3.2.0"
}]
}, {
"name": "ddd",
"alt_name": "alt_ddd",
"data": "2015-05-17",
"subArraycore": [{
"codname": "codname_xxx",
"version": "3.1.0"
}]
}, {
"name": "eee",
"alt_name": "alt_eee",
"data": "2015-10-17",
"subArraycore": [{
"codname": "codname_xxx",
"version": "3.2.0"
}]
}]
}
...使用JSON路径。
我需要在 subArraycore.version = "3.1.0" 时提取所有 "name" 值。
使用$..subArraycore[?(@.version=="3.1.0")]
我得到
[
{
"codname": "codname_xxx",
"version": "3.1.0"
},
{
"codname": "codname_xxx",
"version": "3.1.0"
}
]
没错,但这只是我认为必须用来获取 "name": "bbb"
和 "name": "ddd"
的 JSONPath 表达式的一部分,它们是我需要的名称值.如何修改此 JSON 路径表达式以获取它们?
提前致谢!
这可行:
$.array[?(@.subArraycore[0].version === '3.1.0')].name
Select 那些 array
成员,其中 JS 表达式 subArraycore[0].version === '3.1.0'
为真,并从那里得到 name
.
结果:
[
"bbb",
"ddd"
]