Bash JSON Viewer — jless & JQ_COLORS

·Platform Engineer·Đánh giá bởiNadia Okonkwo·Đã xuất bản

Sử dụng Định dạng JSON đẹp miễn phí trực tiếp trên trình duyệt — không cần cài đặt.

Dùng thử Định dạng JSON đẹp trực tuyến →

Khi bạn cần một bash JSON viewer để khám phá tương tác thay vì scripting, pipe tiêu chuẩn jq . không đủ khả năng — output cuộn qua đầu terminal và bạn không có cách nào điều hướng lại qua phản hồi API 300 dòng. Hướng dẫn này bao gồm các công cụ được xây dựng đặc biệt để xem JSON tương tác trong terminal: jless (cây có thể thu gọn với điều hướng phím vim), JQ_COLORS chủ đề màu tùy chỉnh, jq -C | less -R phân trang có màu, alias shell cho sử dụng hàng ngày, và fx như một lựa chọn thay thế Node.js. Để scripting, CI/CD và quy trình xác thực, xem hướng dẫn Định dạng JSON trong Bash kèm theo. Để có trình xem trình duyệt không cần cài đặt, công cụ Định dạng JSON đẹp hoạt động ngay lập tức. Các ví dụ được kiểm tra trên Bash 5.x (macOS qua Homebrew, Ubuntu 22.04+) và tương thích với Bash 3.2+ (shell hệ thống macOS).

ĐIỂM CHÍNH
  • jless — trình xem JSON tương tác tốt nhất cho terminal: cây thu gọn được, phím vim, tìm kiếm tăng dần
  • jq -C . | less -R — pager có màu và có thể cuộn mà không cần cài đặt thêm ngoài jq
  • JQ_COLORS — biến môi trường tùy chỉnh sơ đồ màu ANSI của jq cho từng loại JSON
  • fx — trình xem JSON Node.js tương tác với hỗ trợ chuột và biểu thức filter JavaScript
  • alias jv='jless' — lệnh một từ biến việc xem tương tác thành thói quen cơ bắp

Xem JSON Tương tác vs. Theo Script

Pipe JSON sang jq . là lựa chọn đúng khi bạn muốn output có định dạng cho payload nhỏ, hoặc khi kết quả được đưa vào lệnh khác. Đó là lựa chọn sai khi bạn cần khám phá phản hồi API 200 field — output bay qua cửa sổ terminal và để lại cho bạn không có cách nào điều hướng, thu gọn các phần, hoặc tìm kiếm field cụ thể mà không chạy lại lệnh với filter. Các trình xem JSON tương tác render cùng output đã định dạng, có màu đó bên trong pager liên tục nơi bạn kiểm soát điều hướng. Dữ liệu giống hệt nhau; sự khác biệt là giao diện.

Before · Bash
After · Bash
# jq . — output scrolls off screen for large responses
curl -s https://api.github.com/users/torvalds | jq .
# 300+ lines scroll past — you lose context immediately
# jless — opens an interactive pager, nothing scrolls off
curl -s https://api.github.com/users/torvalds | jless
# Full document visible, collapsible, searchable with j/k/h/l
Lưu ý:Các trình xem tương tác chỉ dành cho kiểm tra của con người — chúng không bao giờ nên xuất hiện trong script, pipeline CI, hoặc tự động hóa. Để xử lý JSON theo chương trình, dùng jq với filter tường minh và xử lý mã thoát. Hướng dẫn Định dạng JSON trong Bash bao gồm các pattern scripting đó.

jless — Trình Xem JSON Tương Tác

jless là trình xem JSON terminal được xây dựng có mục đích. Khác với pipe jq thông thường, nó render tài liệu như một cây có thể thu gọn liên tục: mỗi object và array có thể được mở rộng hoặc thu gọn độc lập bằng l h, điều hướng sử dụng phím kiểu vim, và tìm kiếm tăng dần tìm bất kỳ key hoặc giá trị nào ngay lập tức. Nó stream input tăng dần, vì vậy mở file lớn và phản hồi API trong dưới một giây bất kể kích thước — trong khi jq buffer toàn bộ tài liệu trước khi hiển thị bất cứ thứ gì. Tôi luôn chọn jless như công cụ đầu tiên bất cứ khi nào phản hồi API quá lớn để quét trong một lần nhìn.

Cài đặt

Bash
# macOS
brew install jless

# Linux — prebuilt binary from GitHub Releases
curl -sL https://github.com/PaulJuliusMartinez/jless/releases/latest/download/jless-x86_64-unknown-linux-gnu.tar.gz \
  | tar xz
sudo mv jless /usr/local/bin/

# Verify
jless --version

Sử dụng cơ bản

Bash
# Open a local file — interactive tree viewer launches immediately
jless api-response.json

# Pipe any JSON stream directly into jless
curl -s https://api.github.com/users/torvalds | jless

# Open with all nodes collapsed to top level (useful starting point for large documents)
jless --mode line api-response.json

# Load a specific array element and view it in isolation
jq '.[0]' deployments.json | jless

Điều hướng và tìm kiếm trong thực tế

Bash
# Inside jless:
#
#   j / ↓        move down
#   k / ↑        move up
#   l / →        expand node (or Enter)
#   h / ←        collapse node
#   H            collapse current + all siblings → high-level overview
#   L            expand everything recursively
#
#   /            start forward search — type a key name and press Enter
#   n / N        next / previous search match
#
#   g / gg       jump to start
#   G            jump to end
#   q            quit

Tài Liệu Tham Khảo Phím Tắt jless

Tất cả phím tắt có sẵn ngay sau khi mở jless — không cần cấu hình. Mô hình điều hướng cố ý giống với vim để thói quen cơ bắp hiện có được chuyển giao.

Phím
Hành động
Khi nào sử dụng
j / ↓
Di chuyển con trỏ xuống một dòng
Duyệt qua các key của object hoặc phần tử của array
k / ↑
Di chuyển con trỏ lên một dòng
Quay lại field trước đó
J
Di chuyển xuống 5 dòng
Cuộn nhanh qua các array dài
K
Di chuyển lên 5 dòng
Điều hướng lên nhanh hơn
h / ← / -
Thu gọn node hiện tại
Ẩn object lồng nhau lớn để giảm nhiễu
l / → / +
Mở rộng node hiện tại
Mở object hoặc array đã thu gọn
H
Thu gọn node hiện tại và tất cả siblings
Xem tổng quan cấu trúc ở cấp cao nhất
L
Mở rộng tất cả nodes đệ quy
Hiển thị toàn bộ chiều sâu của cấu trúc lồng nhau
g
Nhảy đến đầu tài liệu
Quay về root nhanh chóng
G
Nhảy đến cuối tài liệu
Nhảy đến phần tử cuối trong array lớn
/
Bắt đầu tìm kiếm về phía trước
Tìm key hoặc giá trị cụ thể trong tài liệu
?
Bắt đầu tìm kiếm về phía sau
Tìm kiếm ngược từ vị trí hiện tại
n
Nhảy đến kết quả tìm kiếm tiếp theo
Duyệt qua tất cả kết quả tìm kiếm
N
Nhảy đến kết quả tìm kiếm trước đó
Duyệt ngược qua kết quả tìm kiếm
q
Thoát jless
Thoát sau khi kiểm tra xong

jq -C | less -R — Phân Trang Có Màu Không Cần Công Cụ Bổ Sung

Nếu jless chưa được cài đặt và bạn cần xem phản hồi JSON có màu và có thể cuộn, jq -C . | less -R là phương án dự phòng có khả năng. Flag -C buộc mã màu ANSI ngay cả khi stdout là pipe (thông thường jq loại bỏ chúng), và -R yêu cầu less render các mã đó thay vì in chúng dưới dạng văn bản chữ. Kết quả là tài liệu có màu đầy đủ và có thể cuộn — không có cấu trúc cây tương tác của jless. Điều hướng bên trong less sử dụng phím mũi tên hoặc vim-style j/k, và / kích hoạt tìm kiếm văn bản tích hợp của less.

Bash
# Basic colorized pager
jq -C . response.json | less -R

# From a curl response — -s prevents progress bar from corrupting the JSON stream
curl -s https://api.github.com/repos/jqlang/jq | jq -C . | less -R

# Sort keys for easier visual scanning, then page
jq -CS . config.json | less -R
# -C = force color, -S = sort keys (both flags combined)

# Add an alias so you never have to type the full pipe again
alias jqv='jq -C . | less -R'
# Usage: cat response.json | jqv
#    or: curl -s https://api.example.com/status | jqv
Lưu ý:jq -C | less -R buffer toàn bộ output đã định dạng trước khi less có thể hiển thị. Với file 200 MB, điều này có nghĩa là chờ vài giây và tiêu thụ bộ nhớ đáng kể — giới hạn tương tự như jq . thông thường. Với file lớn, hãy dùng jless thay thế vì nó stream tăng dần.

JQ_COLORS — Chủ Đề Màu Tùy Chỉnh

JQ_COLORS là biến môi trường ghi đè sơ đồ màu ANSI mặc định của jq. Nó nhận một chuỗi phân tách bằng dấu hai chấm gồm bảy mã thuộc tính ANSI;màu, một cho mỗi loại JSON theo thứ tự cố định này: null : false : true : số : chuỗi : mảng : đối tượng. Mỗi mã theo định dạng thuộc tính;màu trong đó thuộc tính là 0 (bình thường), 1 (đậm), 2 (mờ), hoặc 4 (gạch chân), và màu là số màu ANSI chuẩn (30–37 = chuẩn, 90–97 = sáng).

Bash
# ANSI color reference for building JQ_COLORS:
#   Attributes:  0=normal  1=bold  2=dim  4=underline
#   Colors:      30=black  31=red  32=green  33=yellow
#                34=blue   35=magenta  36=cyan  37=white
#   Bright:      90=bright-black  91=bright-red  92=bright-green  93=bright-yellow
#                94=bright-blue  95=bright-magenta  96=bright-cyan  97=bright-white
#
# Order: null : false : true : numbers : strings : arrays : objects

# High-contrast theme for dark terminals (recommended)
export JQ_COLORS="1;30:0;91:0;92:0;93:0;32:1;96:1;96"
# null=dim-gray, false=bright-red, true=bright-green,
# numbers=bright-yellow, strings=green, arrays=bold-cyan, objects=bold-cyan

# Solarized-style theme
export JQ_COLORS="2;37:0;35:0;35:0;36:0;33:1;34:1;34"
# null=dim-white, false=magenta, true=magenta,
# numbers=cyan, strings=yellow, arrays=bold-blue, objects=bold-blue

# Minimal (bold keys only, everything else plain)
export JQ_COLORS="0;90:0;39:0;39:0;39:0;39:1;39:1;39"
Bash
# Add your chosen theme to ~/.bashrc or ~/.zshrc so it applies to every jq call
echo 'export JQ_COLORS="1;30:0;91:0;92:0;93:0;32:1;96:1;96"' >> ~/.bashrc
source ~/.bashrc

# Test the theme
echo '{"active":true,"errors":null,"count":42,"tags":["api","v2"],"meta":{"version":"1.0"}}' | jq .
Cảnh báo:JQ_COLORS phải có chính xác bảy giá trị phân tách bằng dấu hai chấm. Nếu chuỗi có ít phân đoạn hơn, jq im lặng quay về mặc định tích hợp mà không có thông báo lỗi nào — khiến việc chẩn đoán cấu hình sai rất khó. Luôn kiểm tra chuỗi màu mới trên payload JSON ngắn trước khi thêm vào profile shell.

Alias Shell cho Xem JSON Hàng Ngày

Các lệnh xem JSON tương tác mặc định khá dài dòng. Một tập hợp alias nhỏ trong ~/.bashrc hoặc ~/.zshrc biến jless và phân trang có màu thành các lệnh một từ tích hợp tự nhiên vào bất kỳ quy trình làm việc nào. Các alias bên dưới có thể kết hợp — jv jvp đều chấp nhận input được pipe hoặc tên file làm đối số đầu tiên.

Bash
# Add to ~/.bashrc or ~/.zshrc

# jv — interactive viewer (jless if available, colorized pager fallback)
jv() {
  if command -v jless &>/dev/null; then
    jless "$@"
  else
    jq -C . "$@" | less -R
  fi
}

# jvp — view with keys sorted alphabetically (useful for comparing responses)
alias jvp='jq -CS . | less -R'

# jvc — view from clipboard (macOS)
alias jvc='pbpaste | jless'

# jvf — view and filter: jvf '.users[0]' response.json
jvf() {
  local filter="$1"; shift
  jq -C "$filter" "$@" | less -R
}

# Reload without restarting terminal
source ~/.bashrc
Bash
# Usage examples after adding aliases above

# View any file or piped response
jv deployment-config.json
curl -s https://api.github.com/users/torvalds | jv

# View sorted (easy to scan alphabetically)
cat feature-flags.json | jvp

# Drill into a sub-document interactively
jvf '.database' infra/app-config.json
jvf '.users[] | select(.role == "admin")' users.json

bat — Xem File JSON với Tô Sáng Cú Pháp

bat là thay thế cho cat với tô sáng cú pháp, số dòng, và pager tích hợp. Với file JSON trên đĩa, nó cung cấp trải nghiệm đọc sạch theo phong cách editor mà không cần mở editor văn bản đầy đủ. Khác với jless, bat render file như văn bản tĩnh — không thu gọn, không tìm kiếm, không điều hướng ngoài cuộn. Điểm mạnh của nó là sự rõ ràng trực quan cho file tĩnh cỡ trung bình (cấu hình, fixture, payload kiểm thử) nơi bạn muốn màu cú pháp và số dòng nhưng không cần điều hướng cây tương tác.

Bash
# macOS
brew install bat

# Debian / Ubuntu (binary may be named batcat)
apt-get install -y bat
# alias bat=batcat   # add to ~/.bashrc if needed on Ubuntu

# View a JSON file with syntax highlighting and line numbers
bat config/feature-flags.json

# Disable pager — print directly to terminal (useful in scripts)
bat --paging=never api-response.json

# Combine with jq: format with jq, view with bat (preserves bat's JSON highlighting)
jq '.' response.json | bat --language=json --paging=never
Lưu ý:Dùng bat để đọc file cấu hình tĩnh và fixture kiểm thử nơi số dòng quan trọng (ví dụ khi lỗi kiểm thử tham chiếu dòng 47 của file fixture). Với phản hồi API và JSON động từ curl, jless mở nhanh hơn và thực tế hơn để điều hướng. Nếu cần xem trong trình duyệt và chia sẻ với đồng nghiệp, dán trực tiếp vào công cụ Định dạng JSON đẹp — không cần terminal.

fx — Trình Khám Phá JSON Node.js Tương Tác

fx là trình xem JSON tương tác được xây dựng trên Node.js. Giao diện của nó tương tự jless — cây có thể thu gọn, điều hướng bàn phím, tìm kiếm — nhưng thêm hai tính năng mà jless thiếu: hỗ trợ chuột (nhấp để mở rộng/thu gọn node) và khả năng gõ biểu thức JavaScript trong thanh dưới để filter tài liệu theo thời gian thực. Với các team đã chạy Node.js, fx phù hợp tự nhiên và không yêu cầu binary riêng. Với môi trường terminal thuần túy không có Node, jless là lựa chọn gọn nhẹ hơn.

Bash
# Install globally via npm
npm install -g fx

# Or run without installing (npx caches the package)
curl -s https://api.github.com/users/torvalds | npx fx

# Basic interactive use
fx api-response.json
curl -s https://api.github.com/repos/jqlang/jq | fx

# In fx: arrow keys navigate, Enter expands/collapses, / searches
# Bottom bar accepts JavaScript expressions for live filtering:
#   .name           → show only the "name" field
#   .repos.slice(0,5) → first 5 repos
Bash
# fx also works as a non-interactive formatter (like jq . but with JS syntax)
# Pass a JavaScript expression as argument — no interactive mode
echo '{"users":[{"id":1,"name":"Sarah Chen"},{"id":2,"name":"Marcus Osei"}]}' \
  | fx '.users[0].name'
# Sarah Chen

# Chain with map for array transformations
cat deployments.json | fx '.items.map(d => ({id: d.deploy_id, status: d.state}))'

Lỗi Thường Gặp

Bốn lỗi này xuất hiện thường xuyên khi developer bắt đầu sử dụng trình xem JSON terminal lần đầu — mỗi lỗi có cách sửa rõ ràng sau khi bạn hiểu lý do xảy ra.

Dùng jq . để xem phản hồi lớn (output cuộn ra ngoài màn hình)

Vấn đề: jq . xuất toàn bộ output ra stdout cùng lúc. Với phản hồi dài hơn chiều cao terminal, mọi thứ trên phần cuối cùng đều mất — bạn không thể cuộn về đầu hoặc điều hướng đến field cụ thể mà không chạy lại lệnh với filter.

Giải pháp: Pipe sang jless để điều hướng tương tác, hoặc dùng jq -C . | less -R như phương án dự phòng. Cả hai đều giữ toàn bộ tài liệu có thể truy cập bất kể kích thước.

Before · Bash
After · Bash
# 300-line API response — top 280 lines immediately scroll off
curl -s https://api.github.com/users/torvalds | jq .
# Only the bottom of the output is visible — cannot navigate back
# Full document stays accessible in jless — nothing is lost
curl -s https://api.github.com/users/torvalds | jless
# j/k to scroll, h/l to collapse/expand, / to search
Đặt JQ_COLORS với số phân đoạn sai

Vấn đề: JQ_COLORS yêu cầu chính xác bảy giá trị phân tách bằng dấu hai chấm. Nếu chuỗi có sáu hoặc tám giá trị, jq im lặng bỏ qua toàn bộ biến và quay về mặc định đã biên dịch — không có cảnh báo, không có lỗi, chỉ là màu sai.

Giải pháp: Đếm dấu hai chấm: chuỗi JQ_COLORS hợp lệ có đúng sáu dấu hai chấm và bảy giá trị. Echo biến và pipe sang tr để đếm.

Before · Bash
After · Bash
# Only 6 values — jq silently uses defaults, no indication of why
export JQ_COLORS="1;30:0;91:0;92:0;93:0;32:1;96"
echo '{"ok":true}' | jq .  # colors unchanged — no error shown
# Exactly 7 values — 6 colons
export JQ_COLORS="1;30:0;91:0;92:0;93:0;32:1;96:1;96"

# Verify the count before adding to shell profile
echo "$JQ_COLORS" | tr -cd ':' | wc -c   # must output 6
Pipe output của jless hoặc fx sang lệnh khác

Vấn đề: jless và fx render giao diện tương tác của chúng ra terminal (TTY), không phải stdout. Pipe chúng sang grep, tee, hoặc bất kỳ lệnh nào khác tạo ra mã escape ANSI lộn xộn hoặc output rỗng — output tương tác của trình xem không được thiết kế để các chương trình khác tiêu thụ.

Giải pháp: Dùng jq với filter tường minh để trích xuất dữ liệu theo chương trình. Chỉ dùng jless và fx như bước cuối trong pipeline khi con người đang đọc output.

Before · Bash
After · Bash
# jless output is for human eyes — piping it produces garbage
jless response.json | grep "request_id"
# Output: ANSI escape codes and cursor sequences, not clean text
# Use jq for programmatic extraction — clean, composable
jq -r '.request_id' response.json | grep "req_"

# Use jless only as the terminal endpoint — nothing after it
jless response.json
Dùng jq -C mà không có less -R (mã màu in như văn bản chữ)

Vấn đề: -C buộc mã màu ANSI vào luồng output. Khi luồng đó được in trực tiếp ra terminal không ở chế độ raw — hoặc pipe sang công cụ không diễn giải ANSI — các chuỗi escape xuất hiện như ký tự chữ ví dụ ^[[1;34m làm lộn xộn output.

Giải pháp: Luôn ghép jq -C với less -R. Flag -R đặt less vào chế độ raw-input, yêu cầu nó render chuỗi ANSI thành màu sắc thay vì in chúng dưới dạng văn bản.

Before · Bash
After · Bash
# -C without -R: escape sequences print as raw text
jq -C . response.json | less
# Output: ^[[1;34m"status"^[[0m: ^[[0;32m"ok"^[[0m ...
# -C with -R: ANSI codes are rendered as actual colors
jq -C . response.json | less -R
# Output: colorized JSON, clean and readable

jless vs jq vs bat vs fx — So Sánh Trình Xem Tương Tác

Cả bốn công cụ đều render JSON có màu, nhưng khả năng tương tác của chúng khác nhau đáng kể. Chọn dựa trên việc bạn có cần điều hướng có thể thu gọn, tìm kiếm, hay hỗ trợ chuột — và liệu Node.js đã có trong môi trường của bạn chưa.

Công cụ
Điều hướng tương tác
Tìm kiếm
Thu gọn được
Màu sắc
File lớn
Cài đặt
jless
✅ vim-keys
✅ (/, n, N)
✅ (h/l keys)
✅ (built-in)
✅ (streaming)
brew / binary
jq -C | less -R
⚠️ (less only)
✅ (/ in less)
✅ (ANSI)
⚠️ (buffers all)
jq only
fx
✅ arrow keys
✅ (/)
⚠️ (JS load)
npm install -g fx
bat
⚠️ (pager only)
❌ (in bat)
✅ (theme)
⚠️ (reads all)
brew / apt
jq . (plain)
❌ (scrolls off)
✅ (tty only)
brew / apt

Với hầu hết tình huống: cài jless một lần và dùng như trình xem tương tác mặc định. Giữ jq -C . | less -R như phương án dự phòng cho môi trường không thể cài binary bổ sung. Thêm fx nếu team của bạn ưu tiên Node.js và đánh giá cao điều hướng chuột hoặc filter JavaScript trực tiếp.

Câu Hỏi Thường Gặp

Làm thế nào để tìm kiếm một key cụ thể bên trong file JSON trong terminal?

Trong jless, nhấn / để mở prompt tìm kiếm tăng dần, gõ tên key, và nhấn Enter. Dùng n để nhảy về phía trước qua các kết quả và N để nhảy ngược lại. Tìm kiếm phân biệt hoa thường theo mặc định. Trong jq -C | less -R, / kích hoạt tìm kiếm tích hợp của less khớp với văn bản thô bao gồm cả mã màu ANSI — tìm kiếm trong jless đáng tin cậy hơn cho JSON có cấu trúc.

Bash
# Open file in jless, then press / to search
jless api-response.json
# In jless: type /  →  "request_id"  →  Enter  →  n for next match

# jq alternative: extract and print all matching keys to stdout
jq '.. | objects | with_entries(select(.key == "request_id"))' api-response.json

Làm thế nào để điều hướng cấu trúc JSON lồng nhau sâu bằng phím tắt?

jless phản ánh điều hướng vim: j/k để lên/xuống, h để thu gọn node, l để mở rộng. Nhấn H để thu gọn node hiện tại và tất cả siblings cùng lúc — hữu ích để có cái nhìn tổng quan trước khi đi sâu vào một nhánh cụ thể. L mở rộng mọi thứ đệ quy. Khi đã thu gọn tất cả về cấp cao nhất, chỉ mở rộng đường dẫn bạn quan tâm bằng l.

Bash
# Open the response in jless
curl -s https://api.github.com/repos/jqlang/jq | jless
# In jless:
#   H            → collapse all top-level keys
#   j/k          → navigate to the key you want
#   l            → expand only that branch
#   gg           → return to root
#   G            → jump to last element

Làm thế nào để màu đầu ra của jq dễ đọc hơn trên terminal tối?

Đặt biến môi trường JQ_COLORS với mã thuộc tính ANSI;màu cho từng loại JSON. Bảy vị trí theo thứ tự là: null, false, true, số, chuỗi, mảng, đối tượng. Đặt export trong ~/.bashrc hoặc ~/.zshrc để áp dụng cho mọi lần gọi jq. Màu sáng đậm hoạt động tốt nhất trên nền tối.

Bash
# High-contrast theme for dark terminals — add to ~/.bashrc or ~/.zshrc
export JQ_COLORS="1;30:0;91:0;92:0;93:0;32:1;96:1;96"
# null=gray, false=bright-red, true=bright-green,
# numbers=bright-yellow, strings=green, arrays/objects=bright-cyan

# Test immediately without reloading shell
echo '{"active":true,"errors":0,"tags":["api","v2"]}' | jq .

Sự khác biệt giữa jless và jq . khi xem JSON là gì?

jq . xuất toàn bộ output ra stdout cùng một lúc. Với các phản hồi dài hơn chiều cao terminal, mọi thứ trên phần cuối cùng sẽ biến mất — bạn không thể cuộn về đầu hoặc điều hướng đến field cụ thể mà không chạy lại lệnh với filter. jless render toàn bộ tài liệu trong pager liên tục nơi bạn có thể cuộn, tìm kiếm, thu gọn node và điều hướng bằng phím tắt mà không mất ngữ cảnh. Dùng jq . khi muốn xem nhanh payload nhỏ; dùng jless khi cần khám phá.

Bash
# Small payload — jq . is fine
echo '{"status":"ok","version":"2.4.1"}' | jq .

# Large or nested response — jless is better
curl -s https://api.github.com/repos/jqlang/jq | jless
# → interactive tree, no output scrolled off screen

Làm thế nào để xem JSON từ phản hồi curl một cách tương tác trong terminal?

Pipe curl trực tiếp vào jless. Luôn thêm -s (silent) để ngăn thanh tiến trình của curl xuất hiện trong output. jless sẽ mở trình xem tương tác với toàn bộ phản hồi được render dưới dạng cây có thể thu gọn. Nếu jless chưa được cài đặt, jq -C . | less -R cung cấp pager có màu như một phương án dự phòng.

Bash
# Interactive exploration with jless
curl -s https://api.github.com/users/torvalds | jless

# Colorized pager fallback (no collapse, but still scrollable with color)
curl -s https://api.github.com/users/torvalds | jq -C . | less -R

Tôi có thể xem nhiều file JSON cạnh nhau trong terminal không?

jless mở một file một lần. Để so sánh cạnh nhau, sử dụng terminal multiplexer: tmux split-window -h mở split dọc, rồi chạy jless trong mỗi panel với file khác nhau. Ngoài ra, sử dụng công cụ JSON Diff trên trình duyệt nếu bạn cần so sánh cấu trúc của hai tài liệu.

Bash
# tmux side-by-side: split horizontally, then run jless in each pane
tmux split-window -h
# Left pane:  jless response-v1.json
# Right pane: jless response-v2.json

# Or use diff on jq-normalized output for a text diff
diff <(jq -S . response-v1.json) <(jq -S . response-v2.json)

Công Cụ Liên Quan

Công cụ Định dạng JSON đẹp mang lại chế độ xem có thể thu gọn và có màu giống như jless — trực tiếp trong trình duyệt, không cần cài đặt và không cần terminal.

CM
Cora MatsumotoPlatform Engineer

Cora is a platform engineer who builds developer tooling and internal platforms, using Bash as the glue that connects components written in different languages and runtimes. She writes about cross-platform shell scripting, Bash utility functions, environment management, configuration templating, and the practical shell techniques that platform engineers use to build self-service tooling for development teams.

NO
Nadia OkonkwoNgười đánh giá kỹ thuật

Nadia is a site reliability engineer who lives in the terminal. She writes Bash scripts that process logs, transform data, and orchestrate infrastructure across fleets of servers. She is a heavy user of jq, awk, and sed and writes about shell one-liners, text processing pipelines, data serialisation from the command line, and the practical Bash patterns that SREs reach for when speed matters more than elegance.