Modifica dei contorni, come la modalità organizzazione, per JSON


15

Sto cercando di modificare un file Swerson JSON in emacs. Contiene oggetti JSON nidificati di grandi dimensioni, quindi desidero comprimerli e nasconderne alcuni.

Ho provato origami-mode, configurato come origami-c-style-parserin origami-parser-alist, ma è abbastanza poco sofisticato (la parola "parser" sembra essere una parola troppo grandiosa per quello che fa). Non nota che le sottostringhe dei parametri URL di Swagger si {id}trovano all'interno delle stringhe JSON, quindi li comprime felicemente anche quando gli chiedo di comprimere tutti i nodi nel buffer tranne il nodo corrente. Non voglio che lo faccia. Voglio un modo di crollare solo sottostrutture JSON come oggetti, non stringhe di stringhe JSON che capita di avere parentesi graffe in loro. Come posso raggiungere questo obiettivo?


Non lo so per certo, ma è del tutto possibile che js2-modeabbia la piegatura che può anche piegare i file JSON.
wvxvw,


Un approccio è convertire il tuo json in un formato albero simile e operare su quello. Questo può essere convertito in xml github.com/hay/xml2json . Yaml sarebbe un altro approccio.
Att Righ,

Risposte:


1

Emacs viene fornito con la modalità hs-minor che può essere utilizzata per nascondere / mostrare selettivamente codice e blocchi di commenti in diverse lingue, incluso JavaScript. Per impostazione predefinita, questo ti permetterà di nascondere e mostrare i blocchi JSON delimitati da '{' e '}' ma è facilmente modificabile per consentire anche '[' e ']' come delimitatori di blocco. Per fare ciò dobbiamo modificare la js-modevoce hs-special-modes-alistcon qualcosa come:

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

Dovresti quindi scoprire che i blocchi [...] possono essere nascosti e mostrati così come i blocchi [...}.


0

Myjson-mode ha una funzione di piegatura del codice che non dovrebbe cercare di piegare oggetti che sembrano oggetti o array all'interno delle stringhe. Non è una modalità principale matura, ma dovrebbe essere utilizzabile.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.