การแก้ไขเค้าร่างเช่นโหมดองค์กรสำหรับ JSON


15

ฉันพยายามแก้ไขไฟล์ Swagger JSON เป็น emacs มันมีวัตถุ JSON ซ้อนกันขนาดใหญ่ดังนั้นฉันต้องการยุบและซ่อนวัตถุบางส่วน

ฉันได้ลองorigami-modeกำหนดค่าเหมือนorigami-c-style-parserในorigami-parser-alistแต่มันค่อนข้างไม่ซับซ้อน (คำว่า "parser" ดูเหมือนจะเป็นคำที่ยิ่งใหญ่เกินไปสำหรับสิ่งที่มันทำ) มันไม่ได้สังเกตว่าสตริงย่อยของพารามิเตอร์ Swagger URL {id}นั้นอยู่ในสตริง JSON ดังนั้นมันจึงยุบลงอย่างมีความสุขเช่นกันเมื่อฉันขอให้ยุบโหนดทั้งหมดในบัฟเฟอร์ยกเว้นโหนดปัจจุบัน ฉันไม่ต้องการให้ทำเช่นนั้น ฉันต้องการวิธีการของการยุบเพียง subtrees JSON เหมือนวัตถุที่ไม่สตริงสตริง JSON ที่เกิดขึ้นจะมีวงเล็บปีกกาในพวกเขา ฉันจะบรรลุเป้าหมายนี้ได้อย่างไร


ฉันไม่รู้เรื่องนี้อย่างแน่นอน แต่มีความเป็นไปได้ที่js2-modeจะมีการพับซึ่งสามารถพับไฟล์ JSON ได้
wvxvw

ที่เกี่ยวข้อง: รหัสพับนามสกุลสำหรับ JSON
แดน

วิธีหนึ่งคือการแปลง json ของคุณเป็นรูปแบบต้นไม้ที่คล้ายกันและดำเนินการกับสิ่งนั้น นี้สามารถแปลงเป็น XML github.com/hay/xml2json Yaml จะเป็นอีกแนวทางหนึ่ง
Att Righ

คำตอบ:


1

Emacs มาพร้อมกับโหมด hs-minor ซึ่งสามารถใช้ซ่อน / แสดงรหัสและบล็อคความคิดเห็นได้ในหลายภาษารวมถึง JavaScript โดยค่าเริ่มต้นสิ่งนี้จะช่วยให้คุณซ่อนและแสดงบล็อก JSON ที่คั่นด้วย '{' และ '}' แต่จะถูกแก้ไขอย่างง่ายดายเพื่ออนุญาตให้ '[' และ ']' เป็นตัวคั่นบล็อก ในการทำเช่นนี้เราจำเป็นต้องแก้ไขjs-modeรายการhs-special-modes-alistด้วยสิ่งที่ชอบ:

(setcdr (รอง 'js-mode hs-special-modes-alist)' ("[{[]" "[} \\]]" "/ [* /]" ไม่มี)

จากนั้นคุณควรพบว่าบล็อก [... ] สามารถซ่อนและแสดงได้เช่นเดียวกับบล็อก {... }


0

Myjson-modeมีคุณสมบัติการพับโค้ดซึ่งไม่ควรพยายามพับสิ่งที่มีลักษณะเป็นวัตถุหรืออาร์เรย์ภายในสตริง มันไม่ได้เป็นโหมดหลักที่ผู้ใหญ่ แต่ควรใช้งานได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.