Mẹo hay: Dùng jq để định dạng JSON ngay từ clipboard

02 tháng 9, 2026·2 phút đọc

Bài viết chia sẻ cách sử dụng công cụ jq để tự động định dạng (pretty-print) dữ liệu JSON sao chép trên clipboard, giúp tiết kiệm thời gian cho lập trình viên. Tác giả cũng đưa ra giải pháp khắc phục lỗi khi clipboard không chứa JSON hợp lệ, đồng thời hướng dẫn cách áp dụng trên cả macOS và Linux.

Đối với các lập trình viên làm việc với API hoặc xử lý dữ liệu, việc đọc và kiểm tra các đoạn JSON phức tạp là điều thường xuyên xảy ra. Một mẹo nhỏ nhưng cực kỳ hữu ích được chia sẻ gần đây là sử dụng công cụ jq để tự động định dạng lại JSON ngay từ clipboard, giúp bạn không cần phải dán vào trình soạn thảo rồi thao tác thủ công.

Ý tưởng chính: Kết hợp jq với clipboard

Tác giả bài viết gốc, Sequoia McDowell, đã giới thiệu một alias (lệnh tắt) vô cùng tiện lợi cho macOS:

alias jsontidy="pbpaste | jq '.' | pbcopy"

Lệnh này hoạt động như sau: Lấy nội dung hiện có trong clipboard (pbpaste), chuyển qua jq để định dạng lại (jq '.'), sau đó ghi kết quả trở lại clipboard (pbcopy). Kết quả là bạn có thể dán (paste) ra bất kỳ đâu một đoạn JSON đã được "làm đẹp" với các dòng và thụt lề rõ ràng.

Chuyển thể sang Linux với xclip

pbpastepbcopy là các tiện ích chỉ có trên macOS, người dùng Linux có thể dễ dàng thay thế bằng xclip:

xclip -selection clipboard -o | jq '.' | xclip -selection clipboard

Điều này giúp mẹo trên hoạt động tương tự trên các bản phân phối Linux phổ biến như Ubuntu, Fedora, hay Arch Linux.

Xử lý lỗi: Khi clipboard không phải là JSON

Tác giả đã phát hiện một vấn đề tiềm ẩn: Nếu nội dung trong clipboard không phải là JSON, lệnh jq sẽ in ra lỗi (ví dụ: parse error: Invalid numeric literal at line 1, column 6) và thoát với mã lỗi khác 0. Tuy nhiên, do cách hoạt động của pipeline, clipboard của bạn vẫn sẽ bị ghi đè bằng một chuỗi rỗng, dẫn đến mất dữ liệu gốc.

Để khắc phục, chúng ta cần thêm một chút logic xử lý lỗi:

alias jsontidy="xclip -selection clipboard -o | (jq '.' || xclip -selection clipboard -o) | xclip -selection clipboard"

Với phiên bản cải tiến này, nếu jq thành công, nội dung đã được định dạng sẽ được chuyển tiếp. Nếu jq thất bại, lệnh sẽ tự động lấy lại nội dung gốc từ clipboard và giữ nguyên nó, đảm bảo bạn không bao giờ bị mất dữ liệu quan trọng do thao tác nhầm.

Kết luận

Đây là một ví dụ điển hình cho thấy sức mạnh của việc kết hợp các công cụ dòng lệnh Unix. Chỉ với một dòng alias ngắn gọn, bạn đã có một "trợ lý" định dạng JSON tức thì, giúp tăng năng suất đáng kể trong công việc hàng ngày. Đối với các lập trình viên Việt Nam thường xuyên làm việc với dữ liệu từ các API, việc áp dụng mẹo nhỏ này chắc chắn sẽ giúp ích rất nhiều trong quá trình debug và kiểm tra dữ liệu.

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗