Chỉnh sửa phác thảo, như chế độ org, cho JSON


15

Tôi đang cố gắng chỉnh sửa tệp JSON Swagger trong emacs. Nó chứa các đối tượng JSON lồng nhau lớn, vì vậy tôi muốn thu gọn và ẩn một số trong số chúng.

Tôi đã thử origami-mode, cấu hình như origami-c-style-parsertrong origami-parser-alist, nhưng nó không phức tạp (từ "trình phân tích cú pháp" dường như là một từ quá hoành tráng cho những gì nó làm). Nó không nhận thấy rằng các chuỗi tham số URL Swagger giống như {id}bên trong các chuỗi JSON, vì vậy nó cũng vui vẻ thu gọn chúng khi tôi yêu cầu nó thu gọn tất cả các nút trong bộ đệm ngoại trừ nút hiện tại. Tôi không muốn nó làm điều đó. Tôi muốn một cách thu gọn chỉ các phần tử JSON như các đối tượng, chứ không phải các chuỗi của chuỗi JSON xảy ra để có các dấu ngoặc nhọn trong đó. Làm thế nào tôi có thể đạt được mục tiêu này?


Tôi không biết điều này chắc chắn, nhưng hoàn toàn có khả năng js2-modegấp cũng có thể gấp các tệp JSON.
wvxvw


Một cách tiếp cận là chuyển đổi json của bạn thành một số định dạng cây tương tự và hoạt động trên đó. Điều này có thể chuyển đổi thành xml github.com/hay/xml2json . Yaml sẽ là một cách tiếp cận khác.
Att Righ

Câu trả lời:


1

Emacs đi kèm với hs-junior-mode có thể được sử dụng một cách chọn lọc ẩn / hiển thị mã và các khối nhận xét bằng nhiều ngôn ngữ, bao gồm cả JavaScript. Theo mặc định, điều này sẽ cho phép bạn ẩn và hiển thị các khối JSON được phân tách bằng '{' và '}' nhưng nó cũng dễ dàng được sửa đổi để cho phép '[' và ']' dưới dạng phân tách khối. Để làm điều này, chúng ta cần sửa đổi js-modemục nhập hs-special-modes-alistbằng một cái gì đó như:

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

Sau đó, bạn sẽ thấy rằng các khối [...] có thể được ẩn và hiển thị cũng như các khối {...}.


0

Myjson-mode có một tính năng gấp mã không nên cố gắng gấp những thứ trông giống như Đối tượng hoặc Mảng bên trong chuỗi. Nó không phải là một chế độ chính trưởng thành, nhưng nó có thể sử dụng được.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.