jsongrep: инструмент для запросов к JSON на основе DFA, превосходящий jq в тестах производительности

✍️ OpenClawRadar📅 Опубликовано: 27 марта 2026 г.🔗 Source
jsongrep: инструмент для запросов к JSON на основе DFA, превосходящий jq в тестах производительности
Ad

Что делает jsongrep

jsongrep (бинарный файл jg) принимает запрос и JSON-ввод и выводит каждое значение, путь которого в документе соответствует запросу. Он рассматривает JSON-документы как деревья, где объекты и массивы являются ветвями, скалярные значения — листьями, а ключи и индексы обозначают рёбра. Язык запросов представляет собой регулярный язык над алфавитом ключей и индексов.

Возможности языка запросов

Точечные пути выбирают вложенные поля по имени: jg 'roommates[0].name' возвращает roommates.[0].name: "Alice".

Подстановочные знаки соответствуют любому отдельному ключу (*) или любому индексу массива ([*]): jg 'favorite_drinks[*]' возвращает все элементы массива.

Альтернация (|) соответствует любой из ветвей: jg 'name | roommates' возвращает оба поля.

Рекурсивный спуск использует * и [*] внутри звёздочки Клини для обхода на произвольную глубину: jg '(* | [*])*.name' находит каждое поле name на любой глубине. Флаг -F предоставляет сокращённую запись: jg -F name делает то же самое.

Опциональный элемент (?) соответствует нулю или одному вхождению: jg 'roommates[0].favorite_food?' возвращает как родительский объект, так и значение поля.

Ad

Технический подход

jsongrep компилирует запросы в детерминированные конечные автоматы (ДКА) с использованием конвейера, который включает: разбор запроса, рассмотрение JSON как дерева, построение НКА с помощью алгоритма Глушкова, детерминизацию через построение подмножеств и поиск с использованием DFS с переходами ДКА. Это позволяет обрабатывать данные за один проход с O(1) работой на каждый входной символ, избегая возвратов, рекурсивных стеков и экспоненциального взрыва на проблемных запросах.

Автор отмечает, что это фундаментально отличается от таких инструментов, как jq, jmespath или jsonpath-rust, которые интерпретируют выражения путей, вычисляют запросы в каждом узле, проверяют предикаты и рекурсивно спускаются — потенциально повторно посещая поддеревья или поддерживая списки задач с рекурсивными запросами спуска.

Установка и доступность

Установите из crates.io: cargo install jsongrep. Как и ripgrep (который вдохновил проект), jsongrep является кроссплатформенным, с доступными бинарными файлами и написан на Rust.

Инструмент определяет, направлен ли вывод в команды типа less или sort, и по умолчанию опускает пути JSON (можно переопределить с помощью опции --with-path).

📖 Read the full source: HN LLM Tools

Ad

👀 Смотрите также

VibeIndex.ai: Поисковая платформа для 90K+ AI-навыков, MCP и плагинов с проверкой безопасности
Инструменты

VibeIndex.ai: Поисковая платформа для 90K+ AI-навыков, MCP и плагинов с проверкой безопасности

Корейский исследователь ИИ создал vibeindex.ai, доступный для поиска хаб, который индексирует более 90 000 навыков ИИ, серверов MCP и плагинов с ежечасными обновлениями и проверкой безопасности с помощью Cisco Skill Scanner по 17 категориям угроз.

OpenClawRadar
Приложение Hyper iOS: Диктофон с транскрипцией в реальном времени и извлечением действий
Инструменты

Приложение Hyper iOS: Диктофон с транскрипцией в реальном времени и извлечением действий

Hyper — это голосовой диктофон для iOS, который транскрибирует разговоры в реальном времени, предоставляет сводки и задачи, а также позволяет задавать вопросы во время беседы с помощью обнаружения ключевого слова. Он предназначен для неструктурированных встреч, таких как личные беседы, кофе-брейки и стендапы.

OpenClawRadar
NervMap: Инструмент для обнаружения сервисов и диагностики серверов с помощью одной команды
Инструменты

NervMap: Инструмент для обнаружения сервисов и диагностики серверов с помощью одной команды

NervMap — это инструмент для Linux, который обнаруживает контейнеры Docker, службы systemd и обычные процессы менее чем за 1 секунду, отображает зависимости между ними и диагностирует проблемы с анализом серьёзности и предложениями по исправлению.

OpenClawRadar
Реляционная память для LLM: Трехуровневая система моделирует взаимоотношения с пользователем
Инструменты

Реляционная память для LLM: Трехуровневая система моделирует взаимоотношения с пользователем

Инструмент с открытым исходным кодом на Python, который добавляет реляционную память к LLM, моделируя отношения пользователь-ИИ по семи психологическим измерениям, используя трёхуровневую нарративную структуру вместо плоского хранения фактов.

OpenClawRadar