Поиск строки JSON

0

У меня есть JSON, как показано ниже

  var json =  {
        "name": "Soft Drinks",
        "T2": [
            {
                "name": "Bottled",
                "T3": [
                    {
                        "name": "Apple",
                        "leaf": [
                            {
                                "name": "Apple 500 ML"
                            },
                            {
                                "name": "Apple 1 Ltr"
                            }
                        ]
                    }
                ]
            },
            {
                "name": "Fountain",
                "T3": [
                    {
                        "name": "Apple",
                        "leaf": [
                            {
                                "name": "Apple Regular, 500 ML"
                            }
                        ]
                    }
                ]
            },
            {
                "name": "Tin",
                "T3": [
                    {
                        "name": "Apple",
                        "leaf": [
                            {
                                "name": "Apple Regular, 300 ML"
                            }
                        ]
                    }
                ]
            }
        ]
    }

Я пытаюсь искать JSON, предоставляя путь

Дело 1 :

Например, если я предоставил путь как

var patharray = ["Soft Drinks","Bottled"] ; //(Bottled doesn't have leaf )

Мне нужен вывод: Apple

Случай 2:

Например, если я предоставил путь как

var patharray = ["Soft Drinks","Bottled","Apple"] ; //(Apple has got leaf )

Мне нужен вывод

 "leaf": [
                            {
                                "name": "Apple 500 ML"
                            },
                            {
                                "name": "Apple 1 Ltr"
                            }
                        ]

Я попробовал это, используя следующий способ, но сейчас его не работает.

function findElement(obj, patharray, index) {
    var res = '';
    if(index < patharray.length) {
        var searchStr = patharray[index];
        index++;
        for(each in obj) {
            if(obj[each] instanceof Array) {
                var found = false;
                for(var i=0;i<obj[each].length;i++) {
                    if(obj[each][i].name == searchStr) {
                        res = obj[each][i];
                        if(index<patharray.length) {
                            console.log('search again')
                            res = findElement(obj[each][i], patharray, index);
                        }
                        found = true
                        break;
                    }
                }
                if(found) {
                    break;
                }
            }
        }   
        return res
    }
}
var patharray = ["Ice creams","Stick","Frosty"] ;

console.log(findElement(json, patharray, 0));
  • 1
    Вероятно, есть библиотека для этого.
  • 0
    Не могли бы вы сказать имя библиотеки.
Теги:

1 ответ

1
Лучший ответ

Проверьте ответы на эту question- JSONPath или другую полезную утилиту XPath для JSON/Javascript; или JQuery JSON

Существует несколько вариантов: JSONSelect, Defiant.js, JSPath

Ещё вопросы

Сообщество Overcoder
Наверх
Меню