Kıvrılma çıktısını Unix kabuk komut dosyasında okunabilir JSON biçiminde görüntüleme


215

Unix kabuk komut dosyamda, bir kıvırma komutu yürüttüğümde, sonuç dosyaya yönlendirdiğim aşağıdaki gibi görüntülenecektir:

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

Ancak, bu çıktıyı aşağıdaki gibi okunabilir JSON biçiminde koymak istiyorum:

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

Çıkışı bu şekilde nasıl biçimlendiririm?

Yanıtlar:


534

Bunu yapmayı deneyin:

curl ... | json_pp 

veya ile kimlik filtresini kullanarak:

curl ... | jq '.'

resim açıklamasını buraya girin

veya ile ve :

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

Https://stedolan.github.io/jq/ adresini kontrol edin


1
İlk olarak bir dosyaya yönlendirmeden deneyin. Json_pp veya jq'in kurulu olup olmadığını test ettiniz mi? Perl ile birlikte geliyor
Gilles Quenot

1
json_ppverileri beklenenden ters sırada biçimlendiriyor gibi görünüyor. Verileri geri almanın bir yolu var mı?
Antonio

1
json_pp, bazı girdi ve çıktı biçimleri (bunlardan biri JSON) arasında dönüştürme yapan bir Perl komut yardımcı programıdır. Varsayılan giriş formatı json ve varsayılan çıkış formatı oldukça seçenekli json.
Fabijan Bajo

3
json_pp çözümü için boru çok zariftir. teşekkür ederim
andy

1
Düğüme giden boru çok zariftir. Teşekkürler!
Matthew Zackschewski

53

JSON çıktısını güzelleştirmek istediğinizi tahmin ediyorum. Bu python kullanılarak elde edilebilir:

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


Cevapladığınız için teşekkürler. Ama ben Python, im kabuk kullanarak kullanmıyorum. u kabuk üzerinde bana rehberlik
Jams

@ Kabuktan python yürüten jams güzel bir çıktı verir.
agconti

Python önceden yüklenmiş olarak harika bir çözüm.
Gayan Weerakutti

1
Bir "| head" eklediğimde bu python betiği "kırık bir boru" hatası veriyor.
Çömelmiş Yavru Kedi

@CrouchingKitten Bu sorunu kendim görmüyorum (belki farklı versiyonlar), ancak bunun nedeni head, sona ulaşmadan önce borunun çıkışını kesen komutun, dolayısıyla boruyu "kırması" olabilir. headBorudan tüm veri akışını tüketmenize izin verirseniz , hatanın görünmemesini beklerdim.
code_dredd

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

yardımcı olabilir.


11

Bu düğüm modülünü kullanabilirsiniz

[sudo] npm i -g json; // düğüm modülünü kurmak için root ayrıcalığını kullanmamanızı öneririz

sonra sadece kıvırdıktan |jsonsonra ekleyin . curl http://localhost:8880/test.json |json


11

Bu Gilles'in cevabına eklenecek. Bunu yapmanın birçok yolu var, ancak kişisel olarak yaygın * nix sistemlerde hafif, hatırlanması kolay ve evrensel olarak mevcut bir şeyi tercih ediyorum (örneğin, tercih ettiğiniz Linux lezzetinin standart LTS kurulumlarıyla veya kurulumu kolay).

Tercih ettikleri sırada seçenekler şunlardır:

Python Json.tool modülü

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

artıları: neredeyse her yerde mevcut; eksileri: renk kodlaması yok


jq (bir kez kurulum gerektirebilir)

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

eksileri: jq yüklemeniz gerekir; artıları: renk kodlaması ve çok yönlü


json_pp (Ubuntu 16.04 LTS'de mevcut)

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

Ruby kullanıcıları için

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

Teşekkürler @zhenhua! Daha cat myFile.json | python -mjson.tool >> myFilePretty.jsonsonra editörümde açtım (vim, nefret etme) ve renkler aldım.
essa

8

Json_reformat'ı çok kullanışlı buldum. Bu yüzden sadece aşağıdakileri yaptım:

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

bu kadar!


Ubuntu kullanıyorsanız json_reformat'ı yajl-tools paketinde bulabilirsiniz.
Kevin


1

Motivasyon: Kıvrılma komutu isteğinden sonra JSON yanıtını güzel yazdırmak istiyorsunuz.

Çözüm : json_pp - bazı giriş ve çıkış biçimleri arasında dönüştürme yapan komut satırı aracı (bunlardan biri JSON). Bu program json_xs dosyasından kopyalanmış ve değiştirilmiştir. Varsayılan giriş formatı json ve varsayılan çıkış formatı oldukça seçenekli json.

Sözdizimi : json_pp [-v] [-f from_format] [-t to_format] [-json_opt options_to_json1[,options_to_json2[,...]]]

Formül :<someCommand> | json_pp

Örnek :

İstek

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

Tepki

{
   "completed" : false,
   "id" : 1,
   "title" : "delectus aut autem",
   "userId" : 1
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.