Edição de estrutura de tópicos, como modo organizacional, para JSON


15

Estou tentando editar um arquivo JSON Swagger no emacs. Ele contém grandes objetos JSON aninhados, então eu quero recolher e ocultar alguns deles.

Eu tentei origami-mode, configurado como origami-c-style-parserem origami-parser-alist, mas é bastante sofisticado (a palavra "analisador" parece ser uma palavra excessivamente grandiosa para o que faz). Ele não percebe que substrings de parâmetros de URL do Swagger, como {id}estão dentro de strings JSON, também os recolhem quando solicito que recolham todos os nós no buffer, exceto o nó atual. Eu não quero fazer isso. Eu quero uma maneira de entrar em colapso apenas subtrees JSON como objetos, não substrings de cordas JSON que acontecem ter chaves neles. Como posso alcançar esse objetivo?


Não sei ao certo, mas é bem possível que js2-modetenha dobras que também podem dobrar arquivos JSON.
Wvxvw


Uma abordagem é converter seu json em algum formato de árvore semelhante e operar com isso. Isso pode ser convertido em xml github.com/hay/xml2json . Yaml seria outra abordagem.
Att Righ

Respostas:


1

O Emacs vem com o modo menor-hs, que pode ser usado para ocultar / mostrar seletivamente códigos e blocos de comentários em vários idiomas, incluindo JavaScript. Por padrão, isso permitirá ocultar e mostrar os blocos JSON delimitados por '{' e '}', mas é facilmente modificado para permitir '[' e ']' como delimitadores de blocos. Para fazer isso, precisamos modificar a js-modeentrada hs-special-modes-alistcom algo como:

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

Você deve achar que os [...] blocos podem ser ocultos e mostrados, além de {...} blocos.


0

Meujson-mode possui um recurso de dobragem de código que não deve tentar dobrar coisas que se parecem com Objetos ou Matrizes dentro de strings. Não é um modo principal maduro, mas deve ser utilizável.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.