Komut satırını kullanarak JSON nesnesindeki öğeleri nasıl sayabilirim?


179

JSONBir curlkomuttan bu tür bir yanıt alıyorum :

[
  {
    "cid": 49,
    "pyn": "yi4",
    "hans": "亿",
    "hant": "億",
    "tid": 68,
    "l10n": "cent million",
    "pid": 1,
    "pos": "num",
    "pos_txt": ""
  },
  {
    "cid": 50,
    "pyn": "yi4",
    "hans": "亿",
    "hant": "億",
    "tid": 69,
    "l10n": "100 millions",
    "pid": 1,
    "pos": "num",
    "pos_txt": ""
  }
]

Bir komut satırı (örn. ) 2Kullanarak dizideki (burada ) öğe sayısını nasıl sayabilirim ?Bashunderscore


JavaScript çözümü sizin için uygun mu?
— thefourtheye

NPMModül aracılığıyla evet. Aksi takdirde hayır.
— Édouard Lopez

Çözümümü kontrol et. Bunun npm'ye ihtiyacı yok. Düz JavaScript.
— thefourtheye

1
Web değil, bir bash bağlamındayım
— Édouard Lopez

JavaScript'i kabukta çalıştırabileceğinizi biliyorsunuz, değil mi?
— thefourtheye

Yanıtlar:


358

Sadece karışıma başka bir çözüm atıyor ...

jqHafif ve esnek bir komut satırı JSON işlemcisi deneyin :

jq length /tmp/test.json

Nesne dizisinin uzunluğunu yazdırır.


4
Kök dizisinin uzunluğunu ararken, ilk jqkodunuz ( .[]) objectkök dizinin her birinin uzunluğunu döndürür . Düzeltmek gerekiyor.
— Édouard Lopez

11
Kökünüz bir dizi değil, bir dizi içeren anahtarlı bir nesne ise, yani {"key": [elem1, elem2]} ise, usejq '.[] | length' file.json
— bitek

8
İnanılmaz bir araç, jqöyle. +1
— Ory Band

@MnemonicFlow için başka bir yararlı seçenek jq map_values(length) file.json. Bu size anahtarları da verecektir.
— Paulo Casaretto

3
-s--slurpjq -s length file.json
— Girişiniz


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.