Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I get parent node in JSONPATH

I have sample json format as per below

var myJSON = {
    section: "main",
    title: "xyz",
    child: [{
        title: "Home",
        isEnable: false,
        isActive: true
    }, {
        title: "Contact",
        isEnable: false,
        isActive: true
    }, {
        title: "Menu",
        isEnable: true,
        child: [{
            title: 'Sub-Menu-1',
            isEnable: true
        }, {
            title: 'Sub-Menu-2',
            isEnable: true,
            child: [{
                title: 'Sub-Menu-2-1',
                isEnable: false,
                isActive: true
            }, {
                title: 'Sub-Menu-2-2',
                isEnable: false,
                isActive: true
            }]
        }, {
            title: 'Sub-Menu-3',
            isEnable: true
        }, {
            title: 'Sub-Menu-4',
            isEnable: true
        }]
    }]
};

I want to get whole object with title name Sub-Menu-2 if I match title with one of its child sub-menu title. I have tried as per below but I didn't get as per my expectation

var result = jsonPath(myJSON , '$..*[?(@.title == "Sub-Menu-2-1")]');

my expected output is below

{
    title: 'Sub-Menu-2',
    isEnable: true
    child: [{
        title: 'Sub-Menu-2-1'
        isEnable: false,
        isActive: true
    }, {
        title: 'Sub-Menu-2-2',
        isEnable: false,
        isActive: true
    }]
}

Please help me to get expected output .Thanks in advance

like image 560
Brijesh Gandhi Avatar asked Aug 15 '26 01:08

Brijesh Gandhi


1 Answers

For your expected output, you need to change the JSONPath expression.

$..[?(@.title =="Sub-Menu-2")]

This will give you the output:

[
    {
        "title": "Sub-Menu-2",
        "isEnable": true,
        "child": [
            {
                "title": "Sub-Menu-2-1",
                "isEnable": false,
                "isActive": true
            },
            {
                "title": "Sub-Menu-2-2",
                "isEnable": false,
                "isActive": true
            }
        ]
    }
]
like image 70
Pramod Karandikar Avatar answered Aug 16 '26 15:08

Pramod Karandikar