3 điểm bởi GN⁺ 2024-03-20 | 1 bình luận | Chia sẻ qua WhatsApp
  • jnv_jnv_ để khám phá JSON

    • jnv_jnv_ cung cấp trình xem JSON tương tác và trình chỉnh sửa bộ lọc jq.
    • Được thiết kế lấy cảm hứng từ jid và jiq.
  • Tính năng

    • Trình xem JSON tương tác và trình chỉnh sửa bộ lọc jq có kèm tô sáng cú pháp JSON.
    • Có thể lấy JSON từ đầu vào chuẩn (stdin), tệp hoặc URL.
    • Hỗ trợ tự động hoàn thành bộ lọc.
    • Các loại bộ lọc được hỗ trợ: Identity, Object Identifier-Index, Array Index.
    • Cung cấp thông báo gợi ý để đánh giá bộ lọc.
  • Cách cài đặt

    • Cài qua Homebrew: brew install ynqa/tap/jnv
    • Cài qua Cargo:
      • Yêu cầu cần có: automake
      • Lệnh cài đặt: cargo install jnv
    • jnv không yêu cầu người dùng phải cài jq trên hệ thống. Lý do là nó sử dụng j9, một binding Rust.
  • Ví dụ

    • Đọc từ tệp: jnv data.json
    • Đọc từ đầu vào chuẩn: cat data.json | jnv
  • Keymap

    • Ctrl + C: thoát jnv
    • Tab: tự động hoàn thành bộ lọc jq
    • Phím mũi tên và tổ hợp Ctrl: di chuyển con trỏ và xóa ký tự trong bộ lọc
    • Enter: bật/tắt mở rộng/thu gọn trong trình xem JSON
    • Ctrl + P/N: mở rộng/thu gọn mọi phần đang gập trong trình xem JSON
  • Cách dùng

    • Trình khám phá JSON và bộ lọc tương tác sử dụng jq.
    • Ví dụ sử dụng: jnv [OPTIONS] [INPUT]
    • Tùy chọn:
      • Chỉ định chế độ chỉnh sửa: "insert" hoặc "overwrite"
      • Điều chỉnh định dạng hiển thị JSON: thay đổi mức thụt lề
      • Có hiển thị gợi ý hay không: hiển thị các gợi ý để cung cấp đề xuất hoặc hướng dẫn cho người dùng
      • Chỉ định độ sâu mở rộng ban đầu: độ sâu mở rộng ban đầu của các nút JSON
      • Kiểm soát độ dài danh sách gợi ý: điều chỉnh độ dài danh sách gợi ý để người dùng chọn hiệu quả hơn

Ý kiến của GN⁺

  • jnv_jnv_ là công cụ giúp khám phá và lọc dữ liệu JSON dễ dàng, đặc biệt hữu ích cho các nhà phát triển làm việc với tập dữ liệu lớn.
  • Công cụ này cung cấp sức mạnh của jq thông qua một giao diện thân thiện hơn với người dùng, giúp xử lý dữ liệu JSON hiệu quả hơn.
  • jnv_jnv_ được triển khai bằng Rust nên có thể có lợi thế về hiệu năng và độ ổn định, đồng thời việc không cần cài riêng jq trên hệ thống cũng là một ưu điểm.
  • Một số công cụ khác có chức năng tương tự là các công cụ kiểm thử API như Postman hoặc Insomnia, nhưng chúng chủ yếu tập trung vào kiểm thử API nên ít chuyên biệt hơn cho việc khám phá JSON thuần túy như jnv_jnv_.
  • Khi áp dụng jnv_jnv_, cần cân nhắc mức độ trực quan của giao diện người dùng và giới hạn của tính năng lọc; nếu cần xử lý JSON phức tạp, có thể vẫn phải học riêng các script jq.

1 bình luận

 
GN⁺ 2024-03-20
Bình luận trên Hacker News
  • Rất tuyệt, một vài góp ý nhỏ:

    • Rất chậm với JSON cỡ trung bình (16MB)
    • Phông chữ quá tối (đã gửi PR)
    • Trong lúc tìm một giải pháp thay thế có hiệu năng tốt, tôi phát hiện ra fx, một trình xem JSON nhanh dù không có các tính năng của jq (fx.wtf)
  • Trông thực sự thú vị - nhất định sẽ xem thử.

    • Đến giờ tôi vẫn dùng jq và up để truy vấn tương tác, nhưng tôi không thích UX của up (đặc biệt với truy vấn dài hoặc dữ liệu không phải ASCII)
    • Tôi rất muốn tìm một lựa chọn thay thế
  • Thật sự quá hay!! Tôi sẽ cài ngay khi chạm vào laptop.

    • Tôi bị thu hút ngay vào bài viết vì cũng đã tự làm một thứ tương tự
    • Tôi tự hỏi liệu có thể khái quát hóa ý tưởng này để nhiều lệnh CLI hơn có giao diện tương tác hay không
    • Tôi đã tưởng tượng về một "command builder" từ lâu, có thể gọi ra tài liệu phù hợp theo vị trí con trỏ và hiển thị nó trong khi chỉnh sửa dòng lệnh
  • Rất tuyệt! Trông rất giống jless.

  • Thỉnh thoảng tôi cũng nghĩ sẽ rất hay nếu có thể tìm kiếm trong đầu ra JSON ngay trong trình duyệt hoặc IDE.

    • Nhưng vấn đề đó chưa cấp bách đến mức đáng để bỏ thời gian vào
  • Nếu bạn dùng Emacs thì cũng có jq-mode.

    • Nhưng tính năng tự động hoàn thành bộ lọc của jnv thực sự là một tính năng sát thủ rất hay
    • jq-mode
  • Thật sự rất hay, điều luôn làm tôi bực khi dùng jq là bạn không thể thấy mình sẽ nhận được dữ liệu gì cho đến khi thực sự truy vấn dữ liệu đó.

  • Nếu bạn dùng Sublime Text, có một plugin làm được điều đó.

    • Lưu ý: tôi mới viết plugin đó cách đây không lâu
    • Plugin Jq
  • Tôi ước mọi người đều biết đến lựa chọn thay thế là "fx".

    • Nó có thể làm được nhiều hơn như map, filter, reduce, v.v. và có ngữ nghĩa gần với những gì bạn đã biết hơn
    • Nó cũng hỗ trợ YAML
    • Bắt đầu với fx
  • Rất hay. Không biết có phải đòi hỏi hơi quá không, nhưng liệu có thể điều chỉnh để nó cũng hoạt động với OjG, dùng JSONPath thay vì cú pháp jq không?

    • Tôi sẵn sàng giúp
    • Xin lỗi nếu điều này có phần bất lịch sự