ابزار jq چیست و چطور JSON را در ترمینال فیلتر می‌کند؟

ابزار jq چیست و چطور JSON را در ترمینال فیلتر می‌کند؟

jq پردازندهٔ JSON در خط فرمان است: فیلتر، برش و رنگ‌آمیزی بدون اسکریپت سنگین — با مثال curl و محدودیت حافظه برای فایل‌های خیلی بزرگ.

۴ دقیقه مطالعه۰ بازدید
اشتراک گذاری۰
فهرست مطالب
  1. ۱jq چه می‌کند؟
  2. ۲چه کسانی به آن نیاز دارند؟
  3. ۳نصب
  4. ۴اولین دستور
  5. ۵چه چیزی عوض می‌شود؟
  6. ۶محدودیت واقعی

وقتی API صدها خط JSON فشرده برمی‌گرداند، پیدا کردن یک فیلد در ترمینال خسته‌کننده است. ذخیره در فایل و جست‌وجوی دستی هم کند است. jq برای همین اصطکاک ساخته شده.

jq چه می‌کند؟

پردازندهٔ خط فرمان برای قالب‌بندی، جست‌وجو و برش JSON است — شبیه sed/awk، ولی کلید/مقدار، آرایه و نوع‌های JSON را می‌فهمد. با C نوشته شده، وابستگی اجرایی سنگین ندارد و خروجی را خوانا (و اغلب رنگی) می‌کند.

چه کسانی به آن نیاز دارند؟

بک‌اند و فرانت که با API کار می‌کنند، DevOps با خروجی Docker/Kubernetes، و مهندسان داده با لاگ‌های ساخت‌یافته. حتی اگر در دورهٔ جاوااسکریپت از صفر تا برنامه‌نویس با آبجکت و آرایه آشنا شده باشید، برای خط فرمان هنوز به ابزاری بدون اسکریپت پایتون/نود نیاز دارید.

نصب

دبیان/اوبونتو:

bashsudo apt-get install jq

macOS (Homebrew):

bashbrew install jq

ویندوز (winget):

powershellwinget install jqlang.jq

اولین دستور

ساده‌ترین فیلتر، نقطه (.) برای مرتب‌سازی است. نمونه از API گیت‌هاب:

bashcurl -s https://api.github.com/repos/jqlang/jq | jq '{name: .name, stars: .stargazers_count, license: .license.name}'

خروجی شبیه:

json{
  "name": "jq",
  "stars": 35590,
  "license": "Other"
}

برای رشتهٔ خام بدون گیومه در شل، -r:

bashcurl -s https://api.github.com/repos/jqlang/jq | jq -r .default_branch

چه چیزی عوض می‌شود؟

قبل از jq، استخراج یک شناسه اغلب با grep/regex نامطمئن یا یک‌خطی پایتون بود. jq همان کار را داخل پایپ‌لاین شل می‌کند: فیلتر، نگاشت آرایه، محاسبه، ساخت JSON تازه.

محدودیت واقعی

کل سند را در RAM می‌خواند؛ برای چند گیگابایت ممکن است حافظه را پر کند — آنجا پردازش جریانی بهتر است. سینتکس پیچیده هم گاهی خوانایی اسکریپت را برای تیم پایین می‌آورد؛ فیلترها را کوتاه و خوانا نگه دارید.

نظرها

اولین نفری باشید که نظر می‌دهد
برای ثبت نظر وارد شوید

سؤالتان را بپرسید یا تجربه‌تان را بنویسید تا نویسنده‌ی مطلب پاسخ بدهد.

مطالب مرتبط

از همین دسته
تفاوت position relative و absolute در CSS

تفاوت position relative و absolute در CSS

relative جای عنصر را در جریان نگه می‌دارد؛ absolute از جریان خارج می‌شود و نسبت به والد موقعیت‌یافته تراز می‌گیرد — با نمونه کارت و badge.

۴ دقیقه