Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.05.2015, 18:06
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

Поисковый движок по дереву, описанному в 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 может выступать любой пользовательский класс, конечно же.
Ответить с цитированием
  #2 (permalink)  
Старый 05.05.2015, 21:22
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

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

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

И еще вот это нашел, с синтаксисом похожим на CSS, но не ясно как его подключить (там внутри вызов не понятной функции require())
https://github.com/mmckegg/json-context
Плюс вроде с ним нужно подгружать еще два пакета.
Ответить с цитированием
  #3 (permalink)  
Старый 05.05.2015, 21:40
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,112

khusamov,
RecursiveIterator / Рекурсивный итератор
<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>
Ответить с цитированием
  #4 (permalink)  
Старый 06.05.2015, 12:44
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу распарсить JSON. gorenie jQuery 3 29.11.2013 22:26
JSON или JSONP для запросов на другой сервер? Метод GET, для длинных сообщений? Kotakota jQuery 5 23.08.2011 23:12
jQuery. Обработка ошибок и JSON. mma_mma jQuery 3 19.07.2010 12:10