jq से JSON रूपांतरित करना: एक इंटरैक्टिव गाइड
(navendu.me)- jq JSON डेटा को संभालने के लिए एक command-line टूल है, जो ज़्यादातर Linux distributions में डिफ़ॉल्ट रूप से इंस्टॉल होता है
- यह JSON डेटा को readable format में print करने (pretty print) या filters का उपयोग करके डेटा को transform करने में उपयोगी है
- यह इतना शक्तिशाली है कि डेवलपर्स के लिए ज़रूर सीखने लायक 5 CLI tools में शामिल किया जा सकता है, और JSON डेटा से जुड़े कई तरह के कामों को आसान बना देता है
jq इंस्टॉलेशन और बुनियादी उपयोग
-
इंस्टॉलेशन का तरीका
- jq को ज़्यादातर package managers से इंस्टॉल किया जा सकता है, या binary सीधे डाउनलोड करके या source से build करके भी इस्तेमाल किया जा सकता है
- इंस्टॉल के बाद
jqकमांड चलाकर यह जांचा जा सकता है कि यह सही से काम कर रहा है
-
बुनियादी उपयोग का उदाहरण
- JSON डेटा को readable format में print करना:
curl 'https://jsonplaceholder.typicode.com/users/1' | jq
- JSON डेटा को readable format में print करना:
-
JSON filter उदाहरण
- किसी खास शर्त से मेल खाने वाला डेटा filter करना:
curl 'https://jsonplaceholder.typicode.com/users' | jq \ '.[] | select(.address.city == "South Christy") | {name, username, email}'
- किसी खास शर्त से मेल खाने वाला डेटा filter करना:
jq की मुख्य विशेषताएँ
बुनियादी filters
-
Identity filter
- इनपुट डेटा को बिना बदले output करना:
echo '{"id":1,"name":"Leanne Graham","website":"hildegard.org"}' | jq '.'
- इनपुट डेटा को बिना बदले output करना:
-
किसी खास field तक पहुँचना
- JSON object की किसी specific field को चुनना:
curl 'https://jsonplaceholder.typicode.com/users/1' | jq '.name' - nested field तक पहुँचना:
curl 'https://jsonplaceholder.typicode.com/users/1' | jq '.address.zipcode'
- JSON object की किसी specific field को चुनना:
array प्रोसेसिंग
-
array elements तक पहुँचना
- JSON array में किसी खास index के element को चुनना:
curl 'https://jsonplaceholder.typicode.com/users' | jq '.[0]'
- JSON array में किसी खास index के element को चुनना:
-
array slicing
- किसी खास range का sub-array निकालना:
curl 'https://jsonplaceholder.typicode.com/users' | jq '.[3:6]'
- किसी खास range का sub-array निकालना:
-
array पर बार-बार प्रोसेसिंग
- array के हर element पर filter लागू करना:
curl 'https://jsonplaceholder.typicode.com/users' | jq '.[] | {name, email}'
- array के हर element पर filter लागू करना:
नया JSON बनाना
-
नया object बनाना
- चुनी गई fields से नया JSON object बनाना:
curl 'https://jsonplaceholder.typicode.com/users/1' | jq \ '{"name": .name, "email": .email, "company": .company.name}'
- चुनी गई fields से नया JSON object बनाना:
-
नया array बनाना
- transformed डेटा से array बनाना:
curl 'https://jsonplaceholder.typicode.com/users' | jq \ '[.[] | {name: .name, email: .email, company: .company.name}]'
- transformed डेटा से array बनाना:
jq की उन्नत विशेषताएँ
functions का उपयोग
-
लंबाई निकालना
- string की लंबाई निकालना:
curl 'https://jsonplaceholder.typicode.com/users/1' | jq '.name | length'
- string की लंबाई निकालना:
-
keys निकालना
- object की keys को array के रूप में लौटाना:
curl 'https://jsonplaceholder.typicode.com/users/1' | jq 'keys'
- object की keys को array के रूप में लौटाना:
-
map function
- array के हर element पर filter लागू करना:
curl 'https://jsonplaceholder.typicode.com/users' | jq \ 'map({name: .name, city: .address.city})'
- array के हर element पर filter लागू करना:
डेटा चुनना
- शर्त के अनुसार डेटा चुनना
- किसी खास शर्त को पूरा करने वाला डेटा filter करना:
curl 'https://jsonplaceholder.typicode.com/users' | jq \ '.[] | select(.address.city == "South Christy")'
- किसी खास शर्त को पूरा करने वाला डेटा filter करना:
JSON रूपांतरण और उपयोग
-
उन्नत JSON रूपांतरण
- डेटा को group करना या statistics निकालने वाले filters:
curl 'https://jsonplaceholder.typicode.com/users' | jq \ 'group_by(.address.city) | map({ city: .[0].address.city, user_count: length, users: [.[] | {name: .name, username: .username}] })'
- डेटा को group करना या statistics निकालने वाले filters:
-
बड़े JSON को संभालना
- बड़ी मात्रा में JSON डेटा को कुशलता से प्रोसेस करना:
curl 'https://api.github.com/repos/apache/apisix/contributors?per_page=100' | jq \ 'sort_by(.contributions) | reverse | map({username: .login, contributions}) | .[0:5]'
- बड़ी मात्रा में JSON डेटा को कुशलता से प्रोसेस करना:
-
jq Playground में अभ्यास करके देखा जा सकता है
3 टिप्पणियां
सारांश के लिए धन्यवाद! वाकई बहुत काम की जानकारी है।
> इतना शक्तिशाली है कि इसे उन 5 CLI tools में शामिल किया जा सकता है जिन्हें developers को ज़रूर सीखना चाहिए,
लेकिन अब यह भी जानने की जिज्ञासा हो रही है कि बाकी 4 CLI tools कौन-से हैं; लेख में उनका ज़िक्र नहीं है, इसलिए वह बात MacGuffin बन गई लगती है..
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 recommendation वीडियो में इसका ज़िक्र हमेशा होता है, हाहा।