我需要从像这样的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"
}]
}]
}
...使用JSONPath。
当subArraycore.version =“3.1.0”时,我需要提取所有“名称”值。
使用$..subArraycore[?(@.version=="3.1.0")]
我获取
[
{
"codname": "codname_xxx",
"version": "3.1.0"
},
{
"codname": "codname_xxx",
"version": "3.1.0"
}
]
这是正确的,但这只是JSONPath表达式的一部分,我认为我将用它来获取"name": "bbb"
和"name": "ddd"
这些我需要的名称值。如何修改此JSONPath表达式以获取它们?
提前谢谢!
答案 0 :(得分:1)
这样可行:
$.array[?(@.subArraycore[0].version === '3.1.0')].name
选择JS表达式array
为真的subArraycore[0].version === '3.1.0'
成员,并从那里获取name
。
结果:
[
"bbb",
"ddd"
]