从 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"
]