3 คะแนน โดย GN⁺ 2024-03-20 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • jnv_jnv_ สำหรับการสำรวจ JSON

    • jnv_jnv_ มีทั้งตัวดู JSON แบบอินเทอร์แอ็กทีฟและตัวแก้ไขตัวกรอง jq
    • ออกแบบโดยได้แรงบันดาลใจจาก jid และ jiq
  • ความสามารถ

    • ตัวดู JSON แบบอินเทอร์แอ็กทีฟและตัวแก้ไขตัวกรอง jq พร้อมการเน้นไวยากรณ์ JSON
    • รับ JSON ได้จาก standard input (stdin), ไฟล์ และ URL
    • รองรับการเติมข้อความตัวกรองอัตโนมัติ
    • ประเภทตัวกรองที่รองรับ: Identity, Object Identifier-Index, Array Index
    • มีข้อความคำใบ้สำหรับการประเมินตัวกรอง
  • วิธีติดตั้ง

    • ติดตั้งผ่าน Homebrew: brew install ynqa/tap/jnv
    • ติดตั้งผ่าน Cargo:
      • ความต้องการเบื้องต้น: automake
      • คำสั่งติดตั้ง: cargo install jnv
    • jnv ไม่จำเป็นต้องให้ผู้ใช้ติดตั้ง jq ในระบบ เพราะใช้ j9 ซึ่งเป็น Rust binding
  • ตัวอย่าง

    • อ่านจากไฟล์: jnv data.json
    • อ่านจาก standard input: cat data.json | jnv
  • คีย์แมป

    • Ctrl + C: ออกจาก jnv
    • Tab: เติมข้อความตัวกรอง jq อัตโนมัติ
    • ปุ่มลูกศรและการใช้ร่วมกับ Ctrl: เลื่อนเคอร์เซอร์และลบอักขระในตัวกรอง
    • Enter: สลับขยาย/ยุบในตัวดู JSON
    • Ctrl + P/N: ขยาย/ยุบทุกส่วนที่พับไว้ในตัวดู JSON
  • วิธีใช้งาน

    • เครื่องมือสำรวจ JSON และตัวกรองแบบอินเทอร์แอ็กทีฟที่ใช้ jq
    • ตัวอย่างการใช้งาน: jnv [OPTIONS] [INPUT]
    • ตัวเลือก:
      • ระบุโหมดแก้ไข: insert หรือ overwrite
      • ปรับรูปแบบการแสดง JSON: เปลี่ยนระดับการเยื้อง
      • แสดงคำใบ้หรือไม่: แสดงคำแนะนำหรือแนวทางให้ผู้ใช้
      • ระบุความลึกการขยายเริ่มต้น: ความลึกเริ่มต้นของการขยายโหนด JSON
      • ควบคุมความยาวรายการคำแนะนำ: ปรับความยาวของรายการคำแนะนำเพื่อให้ผู้ใช้เลือกได้มีประสิทธิภาพขึ้น

ความเห็นจาก GN⁺

  • jnv_jnv_ เป็นเครื่องมือที่ช่วยให้สำรวจและกรองข้อมูล JSON ได้ง่ายขึ้น โดยเฉพาะมีประโยชน์กับนักพัฒนาที่ต้องจัดการชุดข้อมูลขนาดใหญ่
  • เครื่องมือนี้นำความสามารถอันทรงพลังของ jq มาอยู่ในอินเทอร์เฟซที่เป็นมิตรต่อผู้ใช้ ทำให้การจัดการข้อมูล JSON มีประสิทธิภาพมากขึ้น
  • jnv_jnv_ พัฒนาด้วย Rust จึงอาจมีข้อดีด้านประสิทธิภาพและความเสถียร และการไม่ต้องติดตั้ง jq แยกในระบบก็เป็นจุดเด่นเช่นกัน
  • เครื่องมืออื่นที่มีความสามารถคล้ายกัน เช่น Postman หรือ Insomnia เป็นเครื่องมือทดสอบ API แต่เน้นการทดสอบ API เป็นหลัก จึงเฉพาะทางกับการสำรวจ JSON ล้วน ๆ น้อยกว่า jnv_jnv_
  • เมื่อนำ jnv_jnv_ มาใช้ ควรพิจารณาความใช้งานง่ายของอินเทอร์เฟซและข้อจำกัดของความสามารถในการกรอง และหากต้องจัดการ JSON ที่ซับซ้อน อาจยังต้องเรียนรู้สคริปต์ jq เพิ่มเติมแยกต่างหาก

1 ความคิดเห็น

 
GN⁺ 2024-03-20
ความคิดเห็นจาก Hacker News
  • เจ๋งมาก มีข้อสังเกตเล็กน้อย:

    • ช้ามากกับ JSON ขนาดปานกลาง (16MB)
    • ฟอนต์มืดเกินไป (ส่ง PR ไปแล้ว)
    • ระหว่างหาทางเลือกที่ประสิทธิภาพดี พบว่า fx เป็นตัวดู JSON ที่เร็ว แม้จะไม่มีความสามารถแบบ jq (fx.wtf)
  • ดูน่าสนใจมาก — จะต้องลองดูแน่นอน

    • จนถึงตอนนี้ใช้ jq กับ up สำหรับทำ interactive query แต่ไม่ชอบ UX ของ up (โดยเฉพาะกับ query ยาว ๆ หรือข้อมูลที่ไม่ใช่ ASCII)
    • สนใจมากที่จะหาตัวแทน
  • เจ๋งมาก!! จะติดตั้งทันทีที่ได้จับแล็ปท็อป

    • สะดุดตากับโพสต์นี้ทันทีเพราะเคยทำอะไรคล้าย ๆ กัน
    • สงสัยว่าสามารถทำให้แนวคิดนี้ใช้ได้ทั่วไป เพื่อให้คำสั่งบน CLI อื่น ๆ มีอินเทอร์เฟซแบบโต้ตอบได้มากขึ้นหรือไม่
    • จินตนาการถึง "ตัวสร้างคำสั่ง" มานานแล้ว ที่สามารถดึงเอกสารที่เหมาะสมตามตำแหน่งเคอร์เซอร์มาแสดงระหว่างแก้ไข command line ได้
  • เจ๋งมาก! ดูคล้าย jless มาก

  • บางครั้งก็คิดว่าน่าจะดีถ้าค้นหาภายในผลลัพธ์ JSON จากเบราว์เซอร์หรือ IDE ได้

    • แต่ปัญหานี้ยังไม่เร่งด่วนพอให้ทุ่มเวลา
  • ถ้าใช้ Emacs ก็มี jq-mode ด้วย

    • แต่ฟีเจอร์ autocomplete ของฟิลเตอร์ใน jnv นี่แหละคือ killer feature ที่ดีมาก
    • jq-mode
  • เจ๋งมาก สิ่งที่ทำให้หงุดหงิดกับ jq มาตลอดคือ ก่อนจะกรองข้อมูล เรามองไม่เห็นเลยว่าจะได้ข้อมูลอะไรออกมา

  • ถ้าใช้ Sublime Text ก็มีปลั๊กอินที่ทำให้ทำแบบนั้นได้

    • หมายเหตุ: เพิ่งเขียนปลั๊กอินนั้นไปเมื่อไม่นานนี้เอง
    • ปลั๊กอิน Jq
  • อยากให้ทุกคนรู้จักทางเลือกอย่าง "fx"

    • มันทำได้มากกว่า เช่น map, filter, reduce และมีความหมายที่ใกล้กับสิ่งที่คุณรู้อยู่แล้วมากกว่า
    • รองรับ YAML ด้วย
    • เริ่มต้นใช้งาน fx
  • เจ๋งมาก ไม่แน่ใจว่าจะขอมากเกินไปไหม แต่พอจะทำให้ใช้งานกับ OjG ที่ใช้ JSONPath แทนไวยากรณ์ jq ได้ไหม?

    • ยินดีช่วย
    • ถ้าฟังดูเสียมารยาทก็ขออภัย