コマンドラインを使用してJSONオブジェクトのアイテムを数える方法は?


179

私はコマンドJSONからこの種の応答を受け取っていcurlます:

[
  {
    "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": ""
  }
]

またはコマンドライン(例)2を使用して、配列(ここ)の項目数を数えるにはどうすればよいですか?Bashunderscore


JavaScriptソリューションでよろしいですか?
thefourtheye 2014年

NPMモジュールを介してはい。そうでなければ、いいえ。
エドゥアールロペス

私の解決策を確認してください。npmは必要ありません。プレーンJavaScript。
thefourtheye 2014年

1
私はWebではなくbashコンテキストにいます
エドゥアールロペス

シェルでJavaScriptを実行できることをご存知ですか?
thefourtheye 2014年

回答:


358

ミックスに別のソリューションを投入するだけ...

jq軽量で柔軟なコマンドラインJSONプロセッサを試してください。

jq length /tmp/test.json

オブジェクトの配列の長さを出力します。


4
最初のjqコード(.[]objectはルート配列のそれぞれの長さを返しますが、ルート配列自体の長さを探しています。修正する必要がある.
エドゥアールロペス

11
ルートが配列ではなく、配列を含むキーを持つオブジェクト、つまり{"key":[elem1、elem2]}の場合、usejq '.[] | length' file.json
bitek

8
すごいツールjqです。+1
Ory Band

その@MnemonicFlowのもう1つの便利なオプションはjq map_values(length) file.jsonです。それはあなたにも鍵を与えるでしょう。
Paulo Casaretto 2016

3
そして、あなたの入力ではなく、単一のアレイの独立したオブジェクトで構成されている場合、あなたが使用したい-sか、--slurp読みながら配列にそれらを収集するオプションを、:jq -s length file.json
hemflit


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.