Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Поисковый движок по дереву, описанному в JSON (https://javascript.ru/forum/misc/55589-poiskovyjj-dvizhok-po-derevu-opisannomu-v-json.html)

khusamov 05.05.2015 18:06

Поисковый движок по дереву, описанному в JSON
 
Здравствуйте!

Есть движок http://sizzlejs.com/ который делает поиск элемента в дереве DOM. Есть ли аналогичный поисковый движок, но чтобы он искал в дереве JSON?

Например, есть дерево:

var data = {
	items:[{
		id: 1
	}, {
		id: 2
		title: "item2"
	}]
}


Делаем поиск:

var finded = SearchEngine.query("Object[id=2]", data);


и получаем

finded = {
	id: 2
	title: "item2"
}


Здесь вместо Object может выступать любой пользовательский класс, конечно же.

khusamov 05.05.2015 21:22

Пока нашел xPath реализацию для JSON
http://www.defiantjs.com/

И вот эту штуку
https://code.google.com/p/jsonpath/
непонятного назначения, так как не ясно с чего вдруг xPath так коверкать.

И еще вот это нашел, с синтаксисом похожим на CSS, но не ясно как его подключить (там внутри вызов не понятной функции require())
https://github.com/mmckegg/json-context
Плюс вроде с ним нужно подгружать еще два пакета.

рони 05.05.2015 21:40

khusamov,
http://javascript.ru/forum/project/5...-iterator.html
<script src="http://nervgh.github.io/js/recursive-iterator.min.js"></script>
<script>


var data = {
	items:[{
		id: 1
	}, {
		id: 2,
		title: "item2"
	}]
}


      var iterator = new RecursiveIterator(data),
      obj;
      for(var item = iterator.next(); !item.done; item = iterator.next()) {
          var state = item.value;
          if (state.key  == "id" && state.node == 2)  obj = state.parent
      }
  alert(JSON.stringify(obj))

</script>

khusamov 06.05.2015 12:44

Спасибо! Этот итератор
https://github.com/nervgh/recursive-iterator
весьма интересен.
Он может пригодится для создания такого класса, который я ищу в готовом виде.


Часовой пояс GMT +3, время: 18:14.