json

json читает, ищет и изменяет вложенный JSON по точечным путям, сохраняя типы значений. После записи документ проверяется и сохраняется как нормализованный JSON.

ДанныеВерсия 1.3.6Стабильная
lil-terminal

Обзор

json работает прямо с вложенным JSON: обращается к узлам по точечному пути, ищет ключи или значения, атомарно записывает значение из строки или файла, проверяет документ и показывает нормализованный JSON — без буфера сессии.

Путь ведёт к узлу, тип остаётся типом

Команда работает со структурой, а не с фрагментом текста. limits.history выбирает один вложенный узел, -w меняет этот путь, а корректные JSON-значения после : остаются числами, логическими значениями, null, массивами или объектами.

Синтаксис

lil-terminal
json <file> [key|options] · json dump <file>

Справочник

json <file>

показать данные JSON

json <file> <key>

показать точное значение по точечному пути

json dump <file>

показать нормализованный исходный текст JSON

-f <text|mask> [-k|-v]

найти совпадения в ключах или значениях; * и ? включают маску

-w <key> : <value>

записать значение прямо в файл

-w <key> < <file>

записать значение, прочитанное из другого файла

-d <key>

удалить значение по точечному пути

-c

проверить корректность файла JSON

Активный файл

В текущем ядре успешно открытый файл сразу становится доступен через $. Если этот модуль — установленный обработчик с наивысшим приоритетом для расширения файла, достаточно ввести только имя файла: ядро направит его в эту команду. Это удобства ядра; явной формой остаётся json <file>.

Поиск

-f ищет по путям и значениям. -k ограничивает поиск ключами, -v — значениями. Если запрос содержит * или ?, он трактуется как маска.

Прямое редактирование

-w сразу записывает изменение в файл. После : задаётся значение в строке, а < <file> читает значение из другого файла. -d удаляет один точечный путь.

-w меняет файл непосредственно; вариант -w <key> < <file> берёт значение из другого файла. -d удаляет выбранный путь. Если удалить features.1, прежний features.2 станет вторым элементом: индексы массива сдвигаются. Комментарии для JSON недопустимы, отступы при записи нормализуются. Для точного оформления используйте edit / code. Minimum читает целый файл; поиск и изменения — возможности Base.

Интерактивный пример из `/sandbox/`

Запускайте подготовленные примеры прямо на странице. Результат заранее сформирован и показывается в браузере; команды терминала на сервере не выполняются.

Открыть файл и повторно использовать его через $

Установка и управление

Устанавливайте актуальную совместимую версию. Для полного набора возможностей выбирайте Base, для сокращённого — Minimum; уже установленный модуль обновляет команда upgrade.

Base и Minimum — два пакета одного текущего релиза модуля, а не разные версии команды.

Пакет Base

Установить полный пакет с локальной справкой и всеми опубликованными режимами.

install json
Пакет Minimum

Установить сокращённый пакет без локальной справки; help <cmd> -i открывает актуальную серверную справку.

install json -m
Точная публичная версия

Установить именно эту опубликованную версию.

install json -v 1.3.6
Проверить или обновить

Поручить upgrade проверить совместимость и заменить установленный блок только при необходимости.

upgrade json
Удалить модуль

Удалить блок расширения, не затрагивая ядро и остальные модули.

install json -u

Примеры

Примеры можно копировать, но сайт их не выполняет. Перед запуском на реальном проекте проверьте пути, права и разрушающие флаги.

Открыть файл и повторно использовать его через $
cd \sandbox\config | json app.json
name              lil-sandbox
debug             true
features.0        files
features.1        code
features.2        archives
limits.upload_mb  2
limits.history    25
Показать данные JSON
cd \sandbox\config | app.json
name              lil-sandbox
debug             true
features.0        files
features.1        code
features.2        archives
limits.upload_mb  2
limits.history    25
Показать точное значение по точечному пути
json config/app.json limits.history
25
Показать точное значение по точечному пути
json config/app.json features.1
code
Найти совпадения в ключах или значениях; * и ? включают маску
json config/app.json -f "upload" -k
limits.upload_mb  2
Найти совпадения в ключах или значениях; * и ? включают маску
json config/app.json -f "files" -v
features.0  files
Найти совпадения в ключах или значениях; * и ? включают маску
json config/app.json -f "limits.*"
limits.upload_mb  2
limits.history    25
Записать значение прямо в файл
json config/app.json -w limits.history : 30
limits.history  30
Записать значение, прочитанное из другого файла
json config/app.json -w limits.policy < config/value.json
limits.policy  {"rotate":true,"attempts":5}
Записать значение прямо в файл
json config/app.json -w features.1 : "editor"
features.1  editor
Проверить отсутствующий файл
json config/app.json -d features.1
name              lil-sandbox
debug             true
features.0        files
features.1        archives
limits.upload_mb  2
limits.history    25
Проверить корректность файла JSON
json config/app.json -c
Valid JSON
Показать нормализованный исходный текст JSON
json dump config/app.json
{
    "name": "lil-sandbox",
    "debug": true,
    "features": [
        "files",
        "code",
        "archives"
    ],
    "limits": {
        "upload_mb": 2,
        "history": 25
    }
}
Показать точное значение по точечному пути
json config/app.json unknown.key
Path not found
Проверить корректность файла JSON
json config/invalid.json -c
Invalid JSON
Показать данные JSON
json config/missing.json
File not found
Записать значение прямо в файл
json config/app.json -w limits.history
Value required after : or 

Файл из примера: sandbox/config/app.json

Пример использует файл или каталог из защищённой учебной папки /sandbox/.

{
  "name": "lil-sandbox",
  "debug": true,
  "features": ["files", "code", "archives"],
  "limits": {
    "upload_mb": 2,
    "history": 25
  }
}

Связанная документация

Текущая публичная версия

v1.3.62026-11-01

Производственная доработка

Актуальная стабильная версия json. json читает, ищет и изменяет вложенный JSON по точечным путям, сохраняя типы значений.