29 คะแนน โดย GN⁺ 2024-12-12 | 3 ความคิดเห็น | แชร์ทาง WhatsApp
  • jq เป็นเครื่องมือบรรทัดคำสั่งสำหรับจัดการข้อมูล JSON และมักติดตั้งมาให้โดยค่าเริ่มต้นใน Linux distribution ส่วนใหญ่
  • มีประโยชน์สำหรับการแสดงผล JSON ให้อ่านง่าย (pretty print) หรือแปลงข้อมูลด้วยการใช้ฟิลเตอร์
  • เป็นเครื่องมือที่ทรงพลังมากจนถูกนับรวมอยู่ใน 5 เครื่องมือ CLI ที่นักพัฒนาควรต้องเรียนรู้ และช่วยให้ทำงานกับข้อมูล JSON ได้หลากหลายแบบอย่างง่ายดาย

การติดตั้ง jq และการใช้งานพื้นฐาน

  • วิธีติดตั้ง

    • สามารถติดตั้ง jq ได้ผ่าน package manager ส่วนใหญ่ หรือดาวน์โหลดไบนารีโดยตรง หรือคอมไพล์จากซอร์สก็ได้
    • หลังติดตั้งแล้วสามารถตรวจสอบการทำงานได้ด้วยคำสั่ง jq
  • ตัวอย่างการใช้งานพื้นฐาน

  • ตัวอย่างฟิลเตอร์ JSON

    • กรองข้อมูลตามเงื่อนไขที่กำหนด:
      curl 'https://jsonplaceholder.typicode.com/users' | jq \  
      '.[] | select(.address.city == "South Christy") | {name, username, email}'  
      

ความสามารถหลักของ jq

ฟิลเตอร์พื้นฐาน

  • ฟิลเตอร์ Identity

    • แสดงข้อมูลอินพุตออกมาโดยไม่เปลี่ยนแปลง:
      echo '{"id":1,"name":"Leanne Graham","website":"hildegard.org"}' | jq '.'  
      
  • เข้าถึงฟิลด์เฉพาะ

การจัดการอาร์เรย์

  • เข้าถึงสมาชิกในอาร์เรย์

  • สไลซ์อาร์เรย์

  • วนประมวลผลอาร์เรย์

สร้าง JSON ใหม่

  • สร้างอ็อบเจ็กต์ใหม่

    • สร้างอ็อบเจ็กต์ JSON ใหม่จากฟิลด์ที่เลือก:
      curl 'https://jsonplaceholder.typicode.com/users/1' | jq \  
      '{"name": .name, "email": .email, "company": .company.name}'  
      
  • สร้างอาร์เรย์ใหม่

    • สร้างอาร์เรย์จากข้อมูลที่แปลงแล้ว:
      curl 'https://jsonplaceholder.typicode.com/users' | jq \  
      '[.[] | {name: .name, email: .email, company: .company.name}]'  
      

ความสามารถขั้นสูงของ jq

การใช้ฟังก์ชัน

การเลือกข้อมูล

  • เลือกข้อมูลตามเงื่อนไข
    • กรองข้อมูลที่ตรงตามเงื่อนไขที่กำหนด:
      curl 'https://jsonplaceholder.typicode.com/users' | jq \  
      '.[] | select(.address.city == "South Christy")'  
      

การแปลงและการนำ JSON ไปใช้งาน

  • การแปลง JSON ขั้นสูง

    • ฟิลเตอร์สำหรับจัดกลุ่มข้อมูลหรือคำนวณสถิติ:
      curl 'https://jsonplaceholder.typicode.com/users' | jq \  
      'group_by(.address.city) |  
      map({  
        city: .[0].address.city,  
        user_count: length,  
        users: [.[] | {name: .name, username: .username}]  
      })'  
      
  • จัดการ JSON ขนาดใหญ่

  • สามารถลองใช้งานได้ที่ jq Playground

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

 
greenhead 2024-12-12

ขอบคุณสำหรับสรุปนะครับ! เป็นข้อมูลที่มีประโยชน์มากจริง ๆ

 
greenhead 2024-12-12

> ทรงพลังถึงขนาดถูกจัดให้อยู่ใน 5 เครื่องมือ CLI ที่นักพัฒนาควรต้องเรียนรู้,

แต่ก็อดสงสัยไม่ได้ว่าเครื่องมือ CLI อีก 4 ตัวที่เหลือคืออะไร ซึ่งในบทความก็ไม่ได้พูดถึงเลย เลยกลายเป็นเหมือน MacGuffin ไปซะงั้น..

 
ycs1m1yk 2024-12-12

https://navendu.me/posts/jq-interactive-guide/….

พอไปดูต้นฉบับก็เห็นว่า
> jq is on every “five command line tools to learn as a developer” video on YouTube.
มีข้อความแบบนี้อยู่ครับ

อีก 4 ตัวไม่ได้ระบุไว้เป็นพิเศษ แต่ดูเหมือนว่าในคลิปแนวแนะนำ CLI tool แบบนั้นจะมีการพูดถึงมันตลอดเลย 555