यूनिक्स खोल स्क्रिप्ट में पठनीय JSON प्रारूप में कर्ल आउटपुट प्रदर्शित करें


215

मेरी यूनिक्स शैल स्क्रिप्ट में, जब मैं कर्ल कमांड निष्पादित करता हूं, तो परिणाम नीचे प्रदर्शित किया जाएगा, जिसे मैं फाइल में रीडायरेक्ट कर रहा हूं:

{"type":"Show","id":"123","title":"name","description":"Funny","channelTitle":"ifood.tv","lastUpdateTimestamp":"2014-04-20T20:34:59","numOfVideos":"15"}

लेकिन, मैं चाहता हूं कि यह आउटपुट फ़ाइल में नीचे दिए गए पठनीय JSON फॉर्मेट में डाला जाए:

{"type":"Show",
"id":"123",
"title":"name",
"description":"Funny",
"channelTitle":"ifood.tv",
"lastUpdateTimestamp":"2014-04-20T20:34:59",
"numOfVideos":"15"}

मैं इस तरह से आउटपुट को कैसे प्रारूपित करूं?

जवाबों:


533

ऐसा करने का प्रयास करें:

curl ... | json_pp 

या साथ पहचान फ़िल्टर का उपयोग करना:

curl ... | jq '.'

यहां छवि विवरण दर्ज करें

या साथ तथा :

curl ... | node <<< "var o = $(cat); console.log(JSON.stringify(o, null, 4));"

Https://stedolan.github.io/jq/ चेक करें


1
किसी फ़ाइल पर रीडायरेक्ट किए बिना पहले प्रयास करें। क्या आपने परीक्षण किया है कि क्या json_pp या jq स्थापित है? यह पर्ल के साथ आता है
गाइल्स क्वेनोट

1
json_ppलगता है कि यह प्रत्याशित क्रम में डेटा को प्रारूपित करता है। क्या अन-रिवर्स डेटा का एक तरीका है?
एंटोनियो

1
json_pp एक पर्ल कमांड उपयोगिता है, जो कुछ इनपुट और आउटपुट फॉर्मेट (उनमें से एक JSON) के बीच परिवर्तित होती है। डिफ़ॉल्ट इनपुट प्रारूप json है और डिफ़ॉल्ट आउटपुट स्वरूप सुंदर विकल्प के साथ json है।
फबीजन बाजो

3
json_pp समाधान के लिए पाइप बहुत सुंदर है। धन्यवाद
एंडी

1
नोड में पाइप बहुत सुरुचिपूर्ण है। धन्यवाद!
मैथ्यू Zackschewski

53

मैं अनुमान लगा रहा हूं कि आप JSON आउटपुट को प्रीफेक्ट करना चाहते हैं। अजगर का उपयोग करके प्राप्त किया जा सकता है:

curl http://localhost:8880/test.json | python -mjson.tool > out.json


जवाब के लिए धन्यवाद। लेकिन मैं पायथन का उपयोग नहीं कर रहा हूं, शेल का उपयोग कर रहा हूं। क्या आप मुझे शेल पर गाइड कर सकते हैं
जैम्स

@Jams जो आपके सुंदर मुद्रित आउटपुट देने वाले शेल से अजगर को निष्पादित करता है।
२०:

अजगर के रूप में महान समाधान पूर्वस्थापित आता है।
गायन वीरकुट्टी

1
जब मैं इसमें "हेड" जोड़ता हूं तो वह पाइथन लिपि "टूटी हुई पाइप" त्रुटि देती है।
क्रिटिंग किटन

@CrouchingKitten मैं खुद उस समस्या को नहीं देख सकता (शायद अलग-अलग संस्करण), लेकिन हो सकता है कि वह headकमांड को काटने के कारण हो सकता है आउटपुट को पाइप तक पहुंचाने से पहले उसे अंत तक पहुंचा दिया जाए, इस प्रकार पाइप को "तोड़" दिया जाए। यदि आप headपाइप से संपूर्ण डेटा स्ट्रीम का उपभोग करने की अनुमति देते हैं , तो मैं त्रुटि दिखाने की उम्मीद करूंगा।
code_dredd

19
python -m json.tool
Curl http://127.0.0.1:5000/people/api.json | python -m json.tool

भी मदद कर सकता है।


11

आप इस नोड मॉड्यूल का उपयोग कर सकते हैं

[sudo] npm i -g json; // नोड मॉड्यूल को स्थापित करने के लिए रूट विशेषाधिकार का उपयोग न करने का सुझाव दें

तो बस |jsonकर्ल के बाद संलग्न करें । curl http://localhost:8880/test.json |json


11

यह गिल्स के उत्तर में जोड़ना है। इसे पूरा करने के कई तरीके हैं, लेकिन व्यक्तिगत रूप से मैं कुछ हल्के, पसंद करने में आसान और सार्वभौमिक रूप से उपलब्ध (जैसे आपके पसंदीदा लिनक्स स्वाद के मानक एलटीएस प्रतिष्ठानों के साथ आते हैं या स्थापित करना आसान है) को आम * निक्स सिस्टम पर पसंद करते हैं।

यहां उनके पसंदीदा क्रम में विकल्प दिए गए हैं:

अजगर Json.tool मॉड्यूल

echo '{"foo": "lorem", "bar": "ipsum"}' | python -mjson.tool

पेशेवरों: लगभग हर जगह उपलब्ध; विपक्ष: कोई रंग कोडिंग


jq (एक बार स्थापना की आवश्यकता हो सकती है)

echo '{"foo": "lorem", "bar": "ipsum"}' | jq

विपक्ष: jq स्थापित करने की जरूरत है; पेशेवरों: रंग कोडिंग और बहुमुखी


json_pp (उबंटू में उपलब्ध 16.04 LTS)

echo '{"foo": "lorem", "bar": "ipsum"}' | json_pp

रूबी उपयोगकर्ताओं के लिए

gem install jsonpretty
echo '{"foo": "lorem", "bar": "ipsum"}' | jsonpretty

धन्यवाद @ सिंहुआ! मैंने cat myFile.json | python -mjson.tool >> myFilePretty.jsonतब अपने संपादक में खोला (vim, don’t नफरत) और रंग मिला।
निबंध

8

मुझे json_reformat बहुत काम का लगा। इसलिए मैंने निम्नलिखित कार्य किया:

curl http://127.0.0.1:5000/people/api.json | json_reformat

बस!


यदि उबंटू का उपयोग कर आप yajl-tools पैकेज में json_reformat पा सकते हैं।
केविन


1

अभिप्रेरण: आप कर्ल कमांड अनुरोध के बाद JSON प्रतिक्रिया को पहले से प्रिंट करना चाहते हैं।

समाधान : json_pp - कमांडलाइन टूल जो कुछ इनपुट और आउटपुट प्रारूपों (उनमें से एक JSON है) के बीच कनवर्ट करता है। इस प्रोग्राम को json_xs से कॉपी किया गया और संशोधित किया गया। डिफ़ॉल्ट इनपुट प्रारूप json है और डिफ़ॉल्ट आउटपुट स्वरूप सुंदर विकल्प के साथ json है।

पर्यायवाची : json_pp [-v] [-f from_format] [-t to_format] [-json_opt options_to_json1[,options_to_json2[,...]]]

सूत्र :<someCommand> | json_pp

उदाहरण :

निवेदन

curl -X https://jsonplaceholder.typicode.com/todos/1 | json_pp 

प्रतिक्रिया

{
   "completed" : false,
   "id" : 1,
   "title" : "delectus aut autem",
   "userId" : 1
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.