Редактирование структуры, как в режиме org, для JSON

15

Я пытаюсь отредактировать файл Swagger JSON в emacs. Он содержит большие вложенные объекты JSON, поэтому я хочу свернуть и скрыть некоторые из них.

Я пробовал origami-mode, настроил как origami-c-style-parserв origami-parser-alist, но это довольно простое (слово «парсер» кажется чрезмерно грандиозным словом для того, что он делает). Он не замечает, что подстроки параметров URL Swagger, например, {id}находятся внутри строк JSON, поэтому он тоже радостно их сворачивает, когда я прошу его свернуть все узлы в буфере, кроме текущего. Я не хочу этого делать. Я хочу способ разрушения только JSON поддерев , как объекты, а не подстроки JSON строки , которые случаются иметь фигурные скобки в них. Как я могу достичь этой цели?

Робин Грин
источник
Я не знаю этого точно, но вполне возможно, что js2-modeесть сворачивание, которое также может сворачивать файлы JSON.
wvxvw
Один из подходов заключается в том, чтобы преобразовать ваш JSON в какой-то похожий формат дерева и оперировать этим. Это может конвертировать в xml github.com/hay/xml2json . Yaml был бы другой подход.
Att Righ

Ответы:

1

Emacs поставляется с hs-minor-mode, который можно использовать для выборочного скрытия / отображения блоков кода и комментариев на нескольких языках, включая JavaScript. По умолчанию это позволит вам скрывать и показывать блоки JSON, разделенные символами «{» и «}», но его легко изменить, чтобы «[» и «] также можно было использовать в качестве разделителей блоков. Для этого нам нужно изменить js-modeзапись в hs-special-modes-alistчто-то вроде:

(setcdr (assoc 'js-mode hs-special-mode-alist)' ("[{[]" "[} \\]]" "/ [* /]" nil))

Затем вы должны обнаружить, что блоки [...] могут быть скрыты и показаны, а также блоки {...}.

stevoooo
источник
0

У Myjson-mode есть функция сворачивания кода, которая не должна пытаться складывать вещи, похожие на объекты или массивы внутри строк. Это не зрелый мажорный режим, но его следует использовать.

DoMiNeLa10
источник